Select Git revision
ConditionalExtension.php
-
Bartek Jaskulski authored
Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
Bartek Jaskulski authoredSigned-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
ConditionalExtension.php 2.32 KiB
<?php
declare(strict_types=1);
namespace WPDesk\Init\Extension;
use DI\Definition\Helper\AutowireDefinitionHelper;
use Monolog\Formatter\LineFormatter;
use Monolog\Logger;
use Monolog\Processor\PsrLogMessageProcessor;
use Monolog\Processor\UidProcessor;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;
use WPDesk\Init\Binding\Loader\ArrayDefinitions;
use WPDesk\Init\Binding\Loader\BindingDefinitions;
use WPDesk\Init\Configuration\ReadableConfig;
use WPDesk\Init\DependencyInjection\ContainerBuilder;
use WPDesk\Init\Extension\CommonBinding\WPDeskLicenseBridge;
use WPDesk\Init\Extension\CommonBinding\WPDeskTrackerBridge;
use WPDesk\Init\Plugin\Plugin;
use WPDesk\Logger\WC\WooCommerceHandler;
class ConditionalExtension implements Extension {
public function bindings( ContainerInterface $c ): BindingDefinitions {
$bindings = [];
if ( class_exists( \WPDesk\License\PluginRegistrator::class ) ) {
$bindings[] = WPDeskLicenseBridge::class;
}
if ( class_exists( \WPDesk_Tracker::class ) ) {
$bindings[] = WPDeskTrackerBridge::class;
}
return new ArrayDefinitions( $bindings );
}
public function build( ContainerBuilder $builder, Plugin $plugin, ReadableConfig $config ): void {
$definitions = [];
if ( class_exists( \WPDesk\License\PluginRegistrator::class ) ) {
$definitions[ WPDeskLicenseBridge::class ] = new AutowireDefinitionHelper();
}
if ( class_exists( \WPDesk_Tracker::class ) ) {
$definitions[ WPDeskTrackerBridge::class ] = new AutowireDefinitionHelper();
}
if ( class_exists( \WPDesk\Logger\WC\WooCommerceHandler::class ) ) {
$definitions[ LoggerInterface::class ] = static function () use ( $plugin ) {
$logger = new Logger(
$plugin->get_slug(),
[],
[ new PsrLogMessageProcessor( null, true ), new UidProcessor() ]
);
$attach_handler = function () use ( $logger, $plugin ) {
$handler = new WooCommerceHandler( wc_get_logger(), $plugin->get_slug() );
$handler->setFormatter(
new LineFormatter( '%channel%.%level_name% [%extra.uid%]: %message% %context% %extra%' )
);
$logger->pushHandler( $handler );
};
if ( \function_exists( 'wc_get_logger' ) ) {
$attach_handler();
} else {
\add_action( 'woocommerce_init', $attach_handler );
}