Skip to content
Snippets Groups Projects
Select Git revision
  • 1bc680a81dc0e10b9e2f25782a085cc1b0ffc00b
  • main default protected
  • v0.10
  • 0.10.6
  • 0.10.5
  • 0.10.4
  • 0.10.3
  • 0.10.2
  • 0.10.1
  • 0.10.0
  • 0.9.1
  • 0.9.0
12 results

Kernel.php

Blame
  • 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 );
    				}