diff --git a/phpBB/common.php b/phpBB/common.php index 406d8bb093..f958f06ce0 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -9,7 +9,6 @@ */ use Symfony\Component\Config\FileLocator; -use Symfony\Component\DependencyInjection\Compiler\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; @@ -102,6 +101,12 @@ $processor->process($phpbb_container); $phpbb_class_loader = $phpbb_container->get('class_loader'); $phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext'); +$ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor')); +foreach ($ids as $id) { + $processor = $phpbb_container->get($id); + $processor->process($phpbb_container); +} + // set up caching $cache = $phpbb_container->get('cache'); diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml index 20f9d67dd0..61497cbcc1 100644 --- a/phpBB/config/services.yml +++ b/phpBB/config/services.yml @@ -126,3 +126,10 @@ services: - cron_lock - @config - @dbal.conn + + processor.config: + class: phpbb_di_processor_ext + arguments: + - @ext.manager + tags: + - { name: container.processor } diff --git a/phpBB/download/file.php b/phpBB/download/file.php index d8fec8ef94..656f1f38d6 100644 --- a/phpBB/download/file.php +++ b/phpBB/download/file.php @@ -8,7 +8,6 @@ */ use Symfony\Component\Config\FileLocator; -use Symfony\Component\DependencyInjection\Compiler\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; @@ -62,6 +61,12 @@ if (isset($_GET['avatar'])) $phpbb_class_loader = $phpbb_container->get('class_loader'); $phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext'); + $ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor')); + foreach ($ids as $id) { + $processor = $phpbb_container->get($id); + $processor->process($phpbb_container); + } + // set up caching $cache = $phpbb_container->get('cache'); diff --git a/phpBB/includes/di/processor/ext.php b/phpBB/includes/di/processor/ext.php new file mode 100644 index 0000000000..b39ba5e686 --- /dev/null +++ b/phpBB/includes/di/processor/ext.php @@ -0,0 +1,41 @@ +extension_manager = $extension_manager; + } + + public function process(ContainerBuilder $container) + { + $enabled_exts = $this->extension_manager->all_enabled(); + foreach ($enabled_exts as $name => $path) { + if (file_exists($path . '/config/services.yml')) { + $loader = new YamlFileLoader($container, new FileLocator($path . '/config')); + $loader->load('services.yml'); + } + } + } +} diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 0e298c8cdc..1ba0798abc 100644 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -8,7 +8,6 @@ */ use Symfony\Component\Config\FileLocator; -use Symfony\Component\DependencyInjection\Compiler\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; @@ -99,6 +98,12 @@ $phpbb_container->setAlias('cache.driver.install', 'cache.driver'); $phpbb_class_loader = $phpbb_container->get('class_loader'); $phpbb_class_loader_ext = $phpbb_container->get('class_loader.ext'); +$ids = array_keys($phpbb_container->findTaggedServiceIds('container.processor')); +foreach ($ids as $id) { + $processor = $phpbb_container->get($id); + $processor->process($phpbb_container); +} + // set up caching $cache = $phpbb_container->get('cache');