From 0bf3d2d962c33ffa606d38e91d04665b78fbd8bc Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Fri, 5 Sep 2014 02:29:15 +0200 Subject: [ticket/12620] Add the support of the environments for the ext services We look for an environment.yml file in the config/PHPBB_ENVIRONMENT/ directory of the extensionss. If the directory does not exist we look for the environment.yml file in the 'default' environment and finally for the services.yml file in the config/ directory. PHPBB3-12620 --- phpBB/phpbb/di/extension/ext.php | 28 +++++++++++++++++++--- tests/di/create_container_test.php | 4 ++++ .../disabled/config/production/environment.yml | 2 ++ .../ext/vendor/disabled/config/services.yml | 2 -- .../enabled-2/config/production/environment.yml | 2 ++ .../ext/vendor/enabled-3/config/services.yml | 2 ++ .../vendor/enabled/config/default/environment.yml | 2 ++ .../ext/vendor/enabled/config/services.yml | 2 -- 8 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 tests/di/fixtures/ext/vendor/disabled/config/production/environment.yml delete mode 100644 tests/di/fixtures/ext/vendor/disabled/config/services.yml create mode 100644 tests/di/fixtures/ext/vendor/enabled-2/config/production/environment.yml create mode 100644 tests/di/fixtures/ext/vendor/enabled-3/config/services.yml create mode 100644 tests/di/fixtures/ext/vendor/enabled/config/default/environment.yml delete mode 100644 tests/di/fixtures/ext/vendor/enabled/config/services.yml diff --git a/phpBB/phpbb/di/extension/ext.php b/phpBB/phpbb/di/extension/ext.php index 718c992d2e..330303ca0c 100644 --- a/phpBB/phpbb/di/extension/ext.php +++ b/phpBB/phpbb/di/extension/ext.php @@ -45,10 +45,32 @@ class ext extends Extension { foreach ($this->paths as $path) { - if (file_exists($path . '/config/services.yml')) + $services_directory = false; + $services_file = false; + + if (file_exists($path . 'config/' . PHPBB_ENVIRONMENT . '/environment.yml')) + { + $services_directory = $path . 'config/' . PHPBB_ENVIRONMENT; + $services_file = 'environment.yml'; + } + else if (!is_dir($path . 'config/' . PHPBB_ENVIRONMENT)) + { + if (file_exists($path . 'config/default/environment.yml')) + { + $services_directory = $path . 'config/default'; + $services_file = 'environment.yml'; + } + else if (!is_dir($path . 'config/default') && file_exists($path . '/config/services.yml')) + { + $services_directory = $path . 'config'; + $services_file = 'services.yml'; + } + } + + if ($services_directory && $services_file) { - $loader = new YamlFileLoader($container, new FileLocator(phpbb_realpath($path . '/config'))); - $loader->load('services.yml'); + $loader = new YamlFileLoader($container, new FileLocator(phpbb_realpath($services_directory))); + $loader->load($services_file); } } } diff --git a/tests/di/create_container_test.php b/tests/di/create_container_test.php index ecfe504775..ec9828debb 100644 --- a/tests/di/create_container_test.php +++ b/tests/di/create_container_test.php @@ -59,6 +59,8 @@ namespace // Checks use_extensions $this->assertTrue($container->hasParameter('enabled')); + $this->assertTrue($container->hasParameter('enabled_2')); + $this->assertTrue($container->hasParameter('enabled_3')); $this->assertFalse($container->hasParameter('disabled')); $this->assertFalse($container->hasParameter('available')); @@ -201,6 +203,8 @@ namespace phpbb\db\driver { return array( array('ext_name' => 'vendor/enabled'), + array('ext_name' => 'vendor/enabled-2'), + array('ext_name' => 'vendor/enabled-3'), ); } } diff --git a/tests/di/fixtures/ext/vendor/disabled/config/production/environment.yml b/tests/di/fixtures/ext/vendor/disabled/config/production/environment.yml new file mode 100644 index 0000000000..31ada384bf --- /dev/null +++ b/tests/di/fixtures/ext/vendor/disabled/config/production/environment.yml @@ -0,0 +1,2 @@ +parameters: + disabled: true diff --git a/tests/di/fixtures/ext/vendor/disabled/config/services.yml b/tests/di/fixtures/ext/vendor/disabled/config/services.yml deleted file mode 100644 index 31ada384bf..0000000000 --- a/tests/di/fixtures/ext/vendor/disabled/config/services.yml +++ /dev/null @@ -1,2 +0,0 @@ -parameters: - disabled: true diff --git a/tests/di/fixtures/ext/vendor/enabled-2/config/production/environment.yml b/tests/di/fixtures/ext/vendor/enabled-2/config/production/environment.yml new file mode 100644 index 0000000000..feeb5a7a2d --- /dev/null +++ b/tests/di/fixtures/ext/vendor/enabled-2/config/production/environment.yml @@ -0,0 +1,2 @@ +parameters: + enabled_2: true diff --git a/tests/di/fixtures/ext/vendor/enabled-3/config/services.yml b/tests/di/fixtures/ext/vendor/enabled-3/config/services.yml new file mode 100644 index 0000000000..0dae35d2bd --- /dev/null +++ b/tests/di/fixtures/ext/vendor/enabled-3/config/services.yml @@ -0,0 +1,2 @@ +parameters: + enabled_3: true diff --git a/tests/di/fixtures/ext/vendor/enabled/config/default/environment.yml b/tests/di/fixtures/ext/vendor/enabled/config/default/environment.yml new file mode 100644 index 0000000000..88a7919ed1 --- /dev/null +++ b/tests/di/fixtures/ext/vendor/enabled/config/default/environment.yml @@ -0,0 +1,2 @@ +parameters: + enabled: true diff --git a/tests/di/fixtures/ext/vendor/enabled/config/services.yml b/tests/di/fixtures/ext/vendor/enabled/config/services.yml deleted file mode 100644 index 88a7919ed1..0000000000 --- a/tests/di/fixtures/ext/vendor/enabled/config/services.yml +++ /dev/null @@ -1,2 +0,0 @@ -parameters: - enabled: true -- cgit v1.2.1