From 2db160ff87fa42ca6c47e580de9bc9d7e5cced49 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 29 Jun 2014 00:33:31 +0200 Subject: [ticket/12775] Rename config_php to config_php_file PHPBB3-12775 --- phpBB/phpbb/config_php_file.php | 127 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 phpBB/phpbb/config_php_file.php (limited to 'phpBB/phpbb/config_php_file.php') diff --git a/phpBB/phpbb/config_php_file.php b/phpBB/phpbb/config_php_file.php new file mode 100644 index 0000000000..5a2fbca0dd --- /dev/null +++ b/phpBB/phpbb/config_php_file.php @@ -0,0 +1,127 @@ + +* @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_file +{ + /** @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(); + + /** + * The path to the config file. (Defaults: $phpbb_root_path . 'config.' . $php_ext) + * + * @var string + */ + protected $config_file; + + /** + * 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; + $this->config_file = $this->phpbb_root_path . 'config.' . $this->php_ext; + } + + /** + * Set the path to the config file. + * + * @param string $config_file + */ + public function set_config_file($config_file) + { + $this->config_file = $config_file; + $this->config_loaded = false; + } + + /** + * Returns an array containing all the variables defined into the config.php file + * + * @return bool|array Return the content of the config file or false if the file does not exists. + */ + public function get_all() + { + if (!$this->load_config_file()) + { + return false; + } + + return $this->config_data; + } + + /** + * Return the value of a variable defined into the config.php file and false if the variable does not exist. + * + * @param string $variable The name of the variable + * @return mixed + */ + public function get($variable) + { + if (!$this->load_config_file()) + { + return false; + } + + return isset($this->config_data[$variable]) ? $this->config_data[$variable] : false; + } + + /** + * Load the config file and store the information. + * + * @return bool True if the file was correctly loaded, false otherwise. + */ + protected function load_config_file() + { + if (!$this->config_loaded) + { + if (file_exists($this->config_file)) + { + $this->defined_vars = null; + $this->defined_vars = get_defined_vars(); + + require($this->config_file); + $this->config_data = array_diff_key(get_defined_vars(), $this->defined_vars); + + $this->config_loaded = true; + } + else + { + return false; + } + } + + return true; + } +} -- cgit v1.2.1 From 15c23e60b8e4b78c68286ae76e03a12b81393159 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 29 Jun 2014 18:39:19 +0200 Subject: [ticket/12775] Update doc blocks PHPBB3-12775 --- phpBB/phpbb/config_php_file.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'phpBB/phpbb/config_php_file.php') diff --git a/phpBB/phpbb/config_php_file.php b/phpBB/phpbb/config_php_file.php index 5a2fbca0dd..ba8d3a0d9d 100644 --- a/phpBB/phpbb/config_php_file.php +++ b/phpBB/phpbb/config_php_file.php @@ -22,7 +22,7 @@ class config_php_file protected $php_ext; /** - * Indicates if the php config file has been loaded. + * Indicates whether the php config file has been loaded. * * @var bool */ @@ -36,7 +36,7 @@ class config_php_file protected $config_data = array(); /** - * The path to the config file. (Defaults: $phpbb_root_path . 'config.' . $php_ext) + * The path to the config file. (Default: $phpbb_root_path . 'config.' . $php_ext) * * @var string */ @@ -45,7 +45,7 @@ class config_php_file /** * Constructor * - * @param string $phpbb_root_path Path to the phpbb includes directory. + * @param string $phpbb_root_path phpBB Root Path * @param string $php_ext php file extension */ function __construct($phpbb_root_path, $php_ext) @@ -67,7 +67,7 @@ class config_php_file } /** - * Returns an array containing all the variables defined into the config.php file + * Returns an associative array containing the variables defined by the config file. * * @return bool|array Return the content of the config file or false if the file does not exists. */ -- cgit v1.2.1 From ed812a9dfb59b1eb83263adbaa52723ff826a791 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sun, 29 Jun 2014 21:58:17 +0200 Subject: [ticket/12775] Move phpbb_convert_30_dbms_to_31 into the config file class PHPBB3-12775 --- phpBB/phpbb/config_php_file.php | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'phpBB/phpbb/config_php_file.php') diff --git a/phpBB/phpbb/config_php_file.php b/phpBB/phpbb/config_php_file.php index ba8d3a0d9d..c0aa3567e6 100644 --- a/phpBB/phpbb/config_php_file.php +++ b/phpBB/phpbb/config_php_file.php @@ -124,4 +124,51 @@ class config_php_file return true; } + + /** + * Convert either 3.0 dbms or 3.1 db driver class name to 3.1 db driver class name. + * + * If $dbms is a valid 3.1 db driver class name, returns it unchanged. + * Otherwise prepends phpbb\db\driver\ to the dbms to convert a 3.0 dbms + * to 3.1 db driver class name. + * + * @param string $dbms dbms parameter + * @return string driver class + * @throws \RuntimeException + */ + public function convert_30_dbms_to_31($dbms) + { + // Note: this check is done first because mysqli extension + // supplies a mysqli class, and class_exists($dbms) would return + // true for mysqli class. + // However, per the docblock any valid 3.1 driver name should be + // recognized by this function, and have priority over 3.0 dbms. + if (strpos($dbms, 'phpbb\db\driver') === false && class_exists('phpbb\db\driver\\' . $dbms)) + { + return 'phpbb\db\driver\\' . $dbms; + } + + if (class_exists($dbms)) + { + // Additionally we could check that $dbms extends phpbb\db\driver\driver. + // http://php.net/manual/en/class.reflectionclass.php + // Beware of possible performance issues: + // http://stackoverflow.com/questions/294582/php-5-reflection-api-performance + // We could check for interface implementation in all paths or + // only when we do not prepend phpbb\db\driver\. + + /* + $reflection = new \ReflectionClass($dbms); + + if ($reflection->isSubclassOf('phpbb\db\driver\driver')) + { + return $dbms; + } + */ + + return $dbms; + } + + throw new \RuntimeException("You have specified an invalid dbms driver: $dbms"); + } } -- cgit v1.2.1 From 8c0d179e3e43c6c9e2e8e95d26c1dbdb80c26f36 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Mon, 30 Jun 2014 01:01:48 +0200 Subject: [ticket/12775] Set defined_vars as a property of config_php_file PHPBB3-12775 --- phpBB/phpbb/config_php_file.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'phpBB/phpbb/config_php_file.php') diff --git a/phpBB/phpbb/config_php_file.php b/phpBB/phpbb/config_php_file.php index c0aa3567e6..1a562e470d 100644 --- a/phpBB/phpbb/config_php_file.php +++ b/phpBB/phpbb/config_php_file.php @@ -42,6 +42,8 @@ class config_php_file */ protected $config_file; + private $defined_vars; + /** * Constructor * @@ -108,7 +110,6 @@ class config_php_file { if (file_exists($this->config_file)) { - $this->defined_vars = null; $this->defined_vars = get_defined_vars(); require($this->config_file); -- cgit v1.2.1