diff options
author | Tristan Darricau <github@nicofuma.fr> | 2014-06-27 19:39:47 +0200 |
---|---|---|
committer | Tristan Darricau <github@nicofuma.fr> | 2014-07-07 01:02:09 +0200 |
commit | 301d9ce9902a35fb8015805882723ab382f30ef4 (patch) | |
tree | d9109abd79737ff9ed5e7ea6e636dacdacd96685 /phpBB/phpbb | |
parent | cbe846a64eb73b99d11320c79678dd6dcb58b44b (diff) | |
download | forums-301d9ce9902a35fb8015805882723ab382f30ef4.tar forums-301d9ce9902a35fb8015805882723ab382f30ef4.tar.gz forums-301d9ce9902a35fb8015805882723ab382f30ef4.tar.bz2 forums-301d9ce9902a35fb8015805882723ab382f30ef4.tar.xz forums-301d9ce9902a35fb8015805882723ab382f30ef4.zip |
[ticket/12775] Add a config.php class (and service)
PHPBB3-12775
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r-- | phpBB/phpbb/config_php.php | 77 | ||||
-rw-r--r-- | phpBB/phpbb/di/container_factory.php | 57 |
2 files changed, 87 insertions, 47 deletions
diff --git a/phpBB/phpbb/config_php.php b/phpBB/phpbb/config_php.php new file mode 100644 index 0000000000..a92950909d --- /dev/null +++ b/phpBB/phpbb/config_php.php @@ -0,0 +1,77 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb; + +class config_php +{ + /** @var string phpBB Root Path */ + protected $phpbb_root_path; + + /** @var string php file extension */ + protected $php_ext; + + /** + * Indicates if the php config file has been loaded. + * + * @var bool + */ + protected $config_loaded = false; + + /** + * The content of the php config file + * + * @var array + */ + protected $config_data = array(); + + /** + * Constructor + * + * @param string $phpbb_root_path Path to the phpbb includes directory. + * @param string $php_ext php file extension + */ + function __construct($phpbb_root_path, $php_ext) + { + $this->phpbb_root_path = $phpbb_root_path; + $this->php_ext = $php_ext; + } + + /** + * Load the config file, store the information and return them + * + * @return bool|array Return the content of the config file or false if the file does not exists. + */ + public function load_config_file() + { + if (!$this->config_loaded) + { + if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext)) + { + $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null; + $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars(); + + require($this->phpbb_root_path . 'config.' . $this->php_ext); + $this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb); + + $this->config_loaded = true; + } + else + { + return false; + } + } + + return $this->config_data; + } +} diff --git a/phpBB/phpbb/di/container_factory.php b/phpBB/phpbb/di/container_factory.php index 50844ba5d0..37fe9f486f 100644 --- a/phpBB/phpbb/di/container_factory.php +++ b/phpBB/phpbb/di/container_factory.php @@ -43,13 +43,6 @@ class container_factory protected $installed_exts = null; /** - * Indicates if the php config file has been loaded. - * - * @var bool - */ - protected $config_loaded = false; - - /** * The content of the php config file * * @var array @@ -109,11 +102,13 @@ class container_factory /** * Constructor * + * @param \phpbb\config_php $config_php_handler * @param string $phpbb_root_path Path to the phpbb includes directory. * @param string $php_ext php file extension */ - function __construct($phpbb_root_path, $php_ext) + function __construct(\phpbb\config_php $config_php_handler, $phpbb_root_path, $php_ext) { + $this->config_php_handler = $config_php_handler; $this->phpbb_root_path = $phpbb_root_path; $this->php_ext = $php_ext; } @@ -135,9 +130,9 @@ class container_factory { if ($this->config_path === null) { - $config_path = $this->phpbb_root_path . 'config'; + $this->config_path = $this->phpbb_root_path . 'config'; } - $container_extensions = array(new \phpbb\di\extension\core($config_path)); + $container_extensions = array(new \phpbb\di\extension\core($this->config_path)); if ($this->use_extensions) { @@ -147,7 +142,7 @@ class container_factory if ($this->inject_config) { - $this->load_config_file(); + $this->config_data = $this->config_php_handler->load_config_file(); $container_extensions[] = new \phpbb\di\extension\config($this->config_data); } @@ -169,11 +164,7 @@ class container_factory } } - // Impossible because we have a compiled (and so frozen) container - /*if ($this->inject_config) - { - $this->inject_config(); - }*/ + $this->container->set('config.php', $this->config_php_handler); // Frozen container, we can't modify either the services or the parameters //$this->inject_dbal(); @@ -182,34 +173,6 @@ class container_factory } /** - * Load the config file, store the information and return them - * - * @return bool|array Return the content of the config file or false if the file does not exists. - */ - public function load_config_file() - { - if (!$this->config_loaded) - { - if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext)) - { - $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null; - $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars(); - - require($this->phpbb_root_path . 'config.' . $this->php_ext); - $this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb); - - $this->config_loaded = true; - } - else - { - return false; - } - } - - return $this->config_data; - } - - /** * Set if the extensions should be used. * * @param bool $use_extensions @@ -308,7 +271,7 @@ class container_factory { if ($this->dbal_connection === null) { - $this->load_config_file(); + $this->config_data = $this->config_php_handler->load_config_file(); $dbal_driver_class = phpbb_convert_30_dbms_to_31($this->config_data['dbms']); $this->dbal_connection = new $dbal_driver_class(); $this->dbal_connection->sql_connect( @@ -378,8 +341,8 @@ class container_factory if ($this->custom_parameters === null) { $this->custom_parameters = array( - 'core.root_path', $this->phpbb_root_path, - 'core.php_ext', $this->php_ext, + 'core.root_path' => $this->phpbb_root_path, + 'core.php_ext' => $this->php_ext, ); } |