aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/di
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/di')
-rw-r--r--phpBB/includes/di/extension/config.php (renamed from phpBB/includes/di/processor/config.php)59
-rw-r--r--phpBB/includes/di/extension/core.php76
-rw-r--r--phpBB/includes/di/extension/ext.php73
-rw-r--r--phpBB/includes/di/processor/ext.php54
-rw-r--r--phpBB/includes/di/processor/interface.php28
5 files changed, 184 insertions, 106 deletions
diff --git a/phpBB/includes/di/processor/config.php b/phpBB/includes/di/extension/config.php
index 22b6252a6d..b9c752c5de 100644
--- a/phpBB/includes/di/processor/config.php
+++ b/phpBB/includes/di/extension/config.php
@@ -16,40 +16,33 @@ if (!defined('IN_PHPBB'))
}
use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\HttpKernel\DependencyInjection\Extension;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\Config\FileLocator;
/**
-* Configure the container for phpBB's services though
-* user-defined parameters defined in the config.php file.
+* Container config extension
*/
-class phpbb_di_processor_config implements phpbb_di_processor_interface
+class phpbb_di_extension_config extends Extension
{
- private $config_file;
- private $phpbb_root_path;
- private $php_ext;
-
- /**
- * Constructor.
- *
- * @param string $config_file The config file
- * @param string $phpbb_root_path The root path
- * @param string $php_ext The PHP extension
- */
- public function __construct($config_file, $phpbb_root_path, $php_ext)
+ public function __construct($config_file)
{
$this->config_file = $config_file;
- $this->phpbb_root_path = $phpbb_root_path;
- $this->php_ext = $php_ext;
}
/**
- * @inheritdoc
+ * Loads a specific configuration.
+ *
+ * @param array $config An array of configuration values
+ * @param ContainerBuilder $container A ContainerBuilder instance
+ *
+ * @throws InvalidArgumentException When provided tag is not defined in this extension
+ *
+ * @api
*/
- public function process(ContainerBuilder $container)
+ public function load(array $config, ContainerBuilder $container)
{
- require $this->config_file;
-
- $container->setParameter('core.root_path', $this->phpbb_root_path);
- $container->setParameter('core.php_ext', $this->php_ext);
+ require($this->config_file);
$container->setParameter('core.table_prefix', $table_prefix);
$container->setParameter('cache.driver.class', $this->fix_acm_type($acm_type));
@@ -60,10 +53,28 @@ class phpbb_di_processor_config implements phpbb_di_processor_interface
$container->setParameter('dbal.dbname', $dbname);
$container->setParameter('dbal.dbport', $dbport);
$container->setParameter('dbal.new_link', defined('PHPBB_DB_NEW_LINK') && PHPBB_DB_NEW_LINK);
+ }
- $container->set('container', $container);
+ /**
+ * Returns the recommended alias to use in XML.
+ *
+ * This alias is also the mandatory prefix to use when using YAML.
+ *
+ * @return string The alias
+ *
+ * @api
+ */
+ public function getAlias()
+ {
+ return 'config';
}
+ /**
+ * Convert old (3.0) values to 3.1 class names
+ *
+ * @param style $acm_type ACM type
+ * @return ACM type class
+ */
protected function fix_acm_type($acm_type)
{
if (preg_match('#^[a-z]+$#', $acm_type))
diff --git a/phpBB/includes/di/extension/core.php b/phpBB/includes/di/extension/core.php
new file mode 100644
index 0000000000..26aa325bdd
--- /dev/null
+++ b/phpBB/includes/di/extension/core.php
@@ -0,0 +1,76 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\HttpKernel\DependencyInjection\Extension;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\Config\FileLocator;
+
+/**
+* Container core extension
+*/
+class phpbb_di_extension_core extends Extension
+{
+ /**
+ * phpBB Root path
+ * @var string
+ */
+ protected $phpbb_root_path;
+
+ /**
+ * Constructor
+ *
+ * @param string $phpbb_root_path Root path
+ */
+ public function __construct($phpbb_root_path)
+ {
+ $this->phpbb_root_path = $phpbb_root_path;
+ }
+
+ /**
+ * Loads a specific configuration.
+ *
+ * @param array $config An array of configuration values
+ * @param ContainerBuilder $container A ContainerBuilder instance
+ *
+ * @throws InvalidArgumentException When provided tag is not defined in this extension
+ *
+ * @api
+ */
+ public function load(array $config, ContainerBuilder $container)
+ {
+ if (file_exists($this->phpbb_root_path . 'config/services.yml'))
+ {
+ $loader = new YamlFileLoader($container, new FileLocator(realpath($this->phpbb_root_path . 'config')));
+ $loader->load('services.yml');
+ }
+ }
+
+ /**
+ * Returns the recommended alias to use in XML.
+ *
+ * This alias is also the mandatory prefix to use when using YAML.
+ *
+ * @return string The alias
+ *
+ * @api
+ */
+ public function getAlias()
+ {
+ return 'core';
+ }
+}
diff --git a/phpBB/includes/di/extension/ext.php b/phpBB/includes/di/extension/ext.php
new file mode 100644
index 0000000000..2539ff5667
--- /dev/null
+++ b/phpBB/includes/di/extension/ext.php
@@ -0,0 +1,73 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2012 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\HttpKernel\DependencyInjection\Extension;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\Config\FileLocator;
+
+/**
+* Container ext extension
+*/
+class phpbb_di_extension_ext extends Extension
+{
+ protected $paths = array();
+
+ public function __construct($enabled_extensions)
+ {
+ foreach ($enabled_extensions as $ext => $path)
+ {
+ $this->paths[] = $path;
+ }
+ }
+
+ /**
+ * Loads a specific configuration.
+ *
+ * @param array $config An array of configuration values
+ * @param ContainerBuilder $container A ContainerBuilder instance
+ *
+ * @throws InvalidArgumentException When provided tag is not defined in this extension
+ *
+ * @api
+ */
+ public function load(array $config, ContainerBuilder $container)
+ {
+ foreach ($this->paths as $path)
+ {
+ if (file_exists($path . '/config/services.yml'))
+ {
+ $loader = new YamlFileLoader($container, new FileLocator($path . '/config'));
+ $loader->load('services.yml');
+ }
+ }
+ }
+
+ /**
+ * Returns the recommended alias to use in XML.
+ *
+ * This alias is also the mandatory prefix to use when using YAML.
+ *
+ * @return string The alias
+ *
+ * @api
+ */
+ public function getAlias()
+ {
+ return 'ext';
+ }
+}
diff --git a/phpBB/includes/di/processor/ext.php b/phpBB/includes/di/processor/ext.php
deleted file mode 100644
index e69a3d73b3..0000000000
--- a/phpBB/includes/di/processor/ext.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
-*
-* @package phpBB3
-* @copyright (c) 2012 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
-
-use Symfony\Component\Config\FileLocator;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
-
-/**
-* Load the service configurations from all extensions into the container.
-*/
-class phpbb_di_processor_ext implements phpbb_di_processor_interface
-{
- private $extension_manager;
-
- /**
- * Constructor.
- *
- * @param string $extension_manager The extension manager
- */
- public function __construct($extension_manager)
- {
- $this->extension_manager = $extension_manager;
- }
-
- /**
- * @inheritdoc
- */
- 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/includes/di/processor/interface.php b/phpBB/includes/di/processor/interface.php
deleted file mode 100644
index b8563791cc..0000000000
--- a/phpBB/includes/di/processor/interface.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
-*
-* @package phpBB3
-* @copyright (c) 2012 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
-
-use Symfony\Component\DependencyInjection\ContainerBuilder;
-
-interface phpbb_di_processor_interface
-{
- /**
- * Mutate the container.
- *
- * @param ContainerBuilder $container The container
- */
- public function process(ContainerBuilder $container);
-}