vendor/codeages/plugin-bundle/DependencyInjection/FrameworkExtension.php line 15

Open in your IDE?
  1. <?php
  2. namespace Codeages\PluginBundle\DependencyInjection;
  3. use Symfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension as BaseFrameworkExtension;
  4. use Symfony\Component\DependencyInjection\ContainerBuilder;
  5. use Symfony\Component\Config\Resource\DirectoryResource;
  6. use Symfony\Component\Finder\Finder;
  7. use Codeages\PluginBundle\System\PluginConfigurationManager;
  8. class FrameworkExtension extends BaseFrameworkExtension
  9. {
  10.     public function load(array $configsContainerBuilder $container)
  11.     {
  12.         parent::load($configs$container);
  13.         $configuration $this->getConfiguration($configs$container);
  14.         $config $this->processConfiguration($configuration$configs);
  15.         $this->registerThemeTranslatorConfiguration($config['translator'], $container);
  16.     }
  17.     protected function registerThemeTranslatorConfiguration(array $configContainerBuilder $container)
  18.     {
  19.         if (!$this->isConfigEnabled($container$config)) {
  20.             return;
  21.         }
  22.         $translator $container->findDefinition('translator.default');
  23.         $rootDir $container->getParameter('kernel.root_dir');
  24.         $pluginConfigurationManager = new PluginConfigurationManager($rootDir);
  25.         $themeDir $pluginConfigurationManager->getActiveThemeDirectory();
  26.         if (empty($themeDir)) {
  27.             return;
  28.         }
  29.         if (!is_dir($themeDir)) {
  30.             throw new \RuntimeException("Theme directory `{$themeDir}` is not exist.");
  31.         }
  32.         $container->addResource(new DirectoryResource($themeDir));
  33.         $files = array();
  34.         $finder Finder::create()
  35.             ->files()
  36.             ->filter(function (\SplFileInfo $file) {
  37.                 return === substr_count($file->getBasename(), '.') && preg_match('/\.\w+$/'$file->getBasename());
  38.             })
  39.             ->in($themeDir)
  40.         ;
  41.         foreach ($finder as $file) {
  42.             list(, $locale) = explode('.'$file->getBasename(), 3);
  43.             if (!isset($files[$locale])) {
  44.                 $files[$locale] = array();
  45.             }
  46.             $files[$locale][] = (string) $file;
  47.         }
  48.         $options $translator->getArgument(4);
  49.         
  50.         //此处代码因教培Symfony版本(3.4)升级时, 未兼容企培版本, 此处增加兼容企培版本
  51.         $isNewVersion 1;
  52.         if(empty($options)){
  53.             $isNewVersion 0;
  54.             $options $translator->getArgument(3);            
  55.         }
  56.         $options['resource_files'] = array_merge($options['resource_files'], $files);
  57.         if($isNewVersion == 0){
  58.             $translator->replaceArgument(3$options);
  59.         }else{
  60.             $translator->replaceArgument(4$options);
  61.         }
  62.     }
  63. }