vendor/sylius/theme-bundle/src/DependencyInjection/SyliusThemeExtension.php line 67

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Sylius package.
  4.  *
  5.  * (c) Paweł Jędrzejewski
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace Sylius\Bundle\ThemeBundle\DependencyInjection;
  12. use Sylius\Bundle\ThemeBundle\Configuration\ConfigurationProviderInterface;
  13. use Sylius\Bundle\ThemeBundle\Configuration\ConfigurationSourceFactoryInterface;
  14. use Sylius\Bundle\ThemeBundle\Context\ThemeContextInterface;
  15. use Symfony\Component\Config\FileLocator;
  16. use Symfony\Component\DependencyInjection\ContainerBuilder;
  17. use Symfony\Component\DependencyInjection\Extension\Extension;
  18. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  19. final class SyliusThemeExtension extends Extension
  20. {
  21.     /** @var ConfigurationSourceFactoryInterface[] */
  22.     private $configurationSourceFactories = [];
  23.     /**
  24.      * @internal
  25.      */
  26.     public function load(array $configsContainerBuilder $container): void
  27.     {
  28.         $config $this->processConfiguration($this->getConfiguration([], $container), $configs);
  29.         $loader = new XmlFileLoader($container, new FileLocator(__DIR__ '/../Resources/config'));
  30.         $loader->load('services.xml');
  31.         if ($config['assets']['enabled']) {
  32.             $loader->load('services/integrations/assets.xml');
  33.             if ($config['legacy_mode']) {
  34.                 $loader->load('services/integrations/legacy_assets.xml');
  35.             }
  36.         }
  37.         if ($config['templating']['enabled']) {
  38.             $loader->load('services/integrations/templates.xml');
  39.             if ($config['legacy_mode']) {
  40.                 $loader->load('services/integrations/legacy_templates.xml');
  41.             }
  42.         }
  43.         if ($config['translations']['enabled']) {
  44.             $loader->load('services/integrations/translations.xml');
  45.             if ($config['legacy_mode']) {
  46.                 $loader->load('services/integrations/legacy_translations.xml');
  47.             }
  48.         }
  49.         $this->resolveConfigurationSources($container$config);
  50.         $container->setAlias(ThemeContextInterface::class, $config['context']);
  51.         $container
  52.             ->setAlias('sylius.context.theme'ThemeContextInterface::class)
  53.             ->setDeprecated(true'"%alias_id%" service is deprecated since Sylius/ThemeBundle 2.0 and will be removed in 3.0.')
  54.         ;
  55.     }
  56.     public function addConfigurationSourceFactory(ConfigurationSourceFactoryInterface $configurationSourceFactory): void
  57.     {
  58.         $this->configurationSourceFactories[$configurationSourceFactory->getName()] = $configurationSourceFactory;
  59.     }
  60.     public function getConfiguration(array $configContainerBuilder $container): Configuration
  61.     {
  62.         $configuration = new Configuration($this->configurationSourceFactories);
  63.         $container->addObjectResource($configuration);
  64.         return $configuration;
  65.     }
  66.     private function resolveConfigurationSources(ContainerBuilder $container, array $config): void
  67.     {
  68.         $configurationProviders = [];
  69.         foreach ($this->configurationSourceFactories as $configurationSourceFactory) {
  70.             $sourceName $configurationSourceFactory->getName();
  71.             if (isset($config['sources'][$sourceName]) && $config['sources'][$sourceName]['enabled']) {
  72.                 $sourceConfig $config['sources'][$sourceName];
  73.                 $configurationProviders[] = $configurationSourceFactory->initializeSource($container$sourceConfig);
  74.             }
  75.         }
  76.         $compositeConfigurationProvider $container->getDefinition(ConfigurationProviderInterface::class);
  77.         $compositeConfigurationProvider->replaceArgument(0$configurationProviders);
  78.         foreach ($this->configurationSourceFactories as $configurationSourceFactory) {
  79.             $container->addObjectResource($configurationSourceFactory);
  80.         }
  81.     }
  82. }