diff options
Diffstat (limited to 'phpBB/includes/config')
-rw-r--r-- | phpBB/includes/config/config.php | 170 | ||||
-rw-r--r-- | phpBB/includes/config/db.php | 207 | ||||
-rw-r--r-- | phpBB/includes/config/db_text.php | 163 |
3 files changed, 0 insertions, 540 deletions
diff --git a/phpBB/includes/config/config.php b/phpBB/includes/config/config.php deleted file mode 100644 index 4b533dd55c..0000000000 --- a/phpBB/includes/config/config.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Configuration container class -* @package phpBB3 -*/ -class phpbb_config implements ArrayAccess, IteratorAggregate, Countable -{ - /** - * The configuration data - * @var array(string => string) - */ - protected $config; - - /** - * Creates a configuration container with a default set of values - * - * @param array(string => string) $config The configuration data. - */ - public function __construct(array $config) - { - $this->config = $config; - } - - /** - * Retrieves an ArrayIterator over the configuration values. - * - * @return ArrayIterator An iterator over all config data - */ - public function getIterator() - { - return new ArrayIterator($this->config); - } - - /** - * Checks if the specified config value exists. - * - * @param string $key The configuration option's name. - * @return bool Whether the configuration option exists. - */ - public function offsetExists($key) - { - return isset($this->config[$key]); - } - - /** - * Retrieves a configuration value. - * - * @param string $key The configuration option's name. - * @return string The configuration value - */ - public function offsetGet($key) - { - return (isset($this->config[$key])) ? $this->config[$key] : ''; - } - - /** - * Temporarily overwrites the value of a configuration variable. - * - * The configuration change will not persist. It will be lost - * after the request. - * - * @param string $key The configuration option's name. - * @param string $value The temporary value. - */ - public function offsetSet($key, $value) - { - $this->config[$key] = $value; - } - - /** - * Called when deleting a configuration value directly, triggers an error. - * - * @param string $key The configuration option's name. - */ - public function offsetUnset($key) - { - trigger_error('Config values have to be deleted explicitly with the phpbb_config::delete($key) method.', E_USER_ERROR); - } - - /** - * Retrieves the number of configuration options currently set. - * - * @return int Number of config options - */ - public function count() - { - return count($this->config); - } - - /** - * Removes a configuration option - * - * @param String $key The configuration option's name - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached - * @return null - */ - public function delete($key, $use_cache = true) - { - unset($this->config[$key]); - } - - /** - * Sets a configuration option's value - * - * @param string $key The configuration option's name - * @param string $value New configuration value - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached. - */ - public function set($key, $value, $use_cache = true) - { - $this->config[$key] = $value; - } - - /** - * Sets a configuration option's value only if the old_value matches the - * current configuration value or the configuration value does not exist yet. - * - * @param string $key The configuration option's name - * @param string $old_value Current configuration value - * @param string $new_value New configuration value - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached. - * @return bool True if the value was changed, false otherwise. - */ - public function set_atomic($key, $old_value, $new_value, $use_cache = true) - { - if (!isset($this->config[$key]) || $this->config[$key] == $old_value) - { - $this->config[$key] = $new_value; - return true; - } - return false; - } - - /** - * Increments an integer configuration value. - * - * @param string $key The configuration option's name - * @param int $increment Amount to increment by - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached. - */ - function increment($key, $increment, $use_cache = true) - { - if (!isset($this->config[$key])) - { - $this->config[$key] = 0; - } - - $this->config[$key] += $increment; - } -} diff --git a/phpBB/includes/config/db.php b/phpBB/includes/config/db.php deleted file mode 100644 index b18369a479..0000000000 --- a/phpBB/includes/config/db.php +++ /dev/null @@ -1,207 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2010 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Configuration container class -* @package phpBB3 -*/ -class phpbb_config_db extends phpbb_config -{ - /** - * Cache instance - * @var phpbb_cache_driver_interface - */ - protected $cache; - - /** - * Database connection - * @var phpbb_db_driver - */ - protected $db; - - /** - * Name of the database table used for configuration. - * @var string - */ - protected $table; - - /** - * Creates a configuration container with a default set of values - * - * @param phpbb_db_driver $db Database connection - * @param phpbb_cache_driver_interface $cache Cache instance - * @param string $table Configuration table name - */ - public function __construct(phpbb_db_driver $db, phpbb_cache_driver_interface $cache, $table) - { - $this->db = $db; - $this->cache = $cache; - $this->table = $table; - - if (($config = $cache->get('config')) !== false) - { - $sql = 'SELECT config_name, config_value - FROM ' . $this->table . ' - WHERE is_dynamic = 1'; - $result = $this->db->sql_query($sql); - - while ($row = $this->db->sql_fetchrow($result)) - { - $config[$row['config_name']] = $row['config_value']; - } - $this->db->sql_freeresult($result); - } - else - { - $config = $cached_config = array(); - - $sql = 'SELECT config_name, config_value, is_dynamic - FROM ' . $this->table; - $result = $this->db->sql_query($sql); - - while ($row = $this->db->sql_fetchrow($result)) - { - if (!$row['is_dynamic']) - { - $cached_config[$row['config_name']] = $row['config_value']; - } - - $config[$row['config_name']] = $row['config_value']; - } - $this->db->sql_freeresult($result); - - $cache->put('config', $cached_config); - } - - parent::__construct($config); - } - - /** - * Removes a configuration option - * - * @param String $key The configuration option's name - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached - * @return null - */ - public function delete($key, $use_cache = true) - { - $sql = 'DELETE FROM ' . $this->table . " - WHERE config_name = '" . $this->db->sql_escape($key) . "'"; - $this->db->sql_query($sql); - - unset($this->config[$key]); - - if ($use_cache) - { - $this->cache->destroy('config'); - } - } - - /** - * Sets a configuration option's value - * - * @param string $key The configuration option's name - * @param string $value New configuration value - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached. - */ - public function set($key, $value, $use_cache = true) - { - $this->set_atomic($key, false, $value, $use_cache); - } - - /** - * Sets a configuration option's value only if the old_value matches the - * current configuration value or the configuration value does not exist yet. - * - * @param string $key The configuration option's name - * @param mixed $old_value Current configuration value or false to ignore - * the old value - * @param string $new_value New configuration value - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached - * @return bool True if the value was changed, false otherwise - */ - public function set_atomic($key, $old_value, $new_value, $use_cache = true) - { - $sql = 'UPDATE ' . $this->table . " - SET config_value = '" . $this->db->sql_escape($new_value) . "' - WHERE config_name = '" . $this->db->sql_escape($key) . "'"; - - if ($old_value !== false) - { - $sql .= " AND config_value = '" . $this->db->sql_escape($old_value) . "'"; - } - - $result = $this->db->sql_query($sql); - - if (!$this->db->sql_affectedrows($result) && isset($this->config[$key])) - { - return false; - } - - if (!isset($this->config[$key])) - { - $sql = 'INSERT INTO ' . $this->table . ' ' . $this->db->sql_build_array('INSERT', array( - 'config_name' => $key, - 'config_value' => $new_value, - 'is_dynamic' => ($use_cache) ? 0 : 1)); - $this->db->sql_query($sql); - } - - if ($use_cache) - { - $this->cache->destroy('config'); - } - - $this->config[$key] = $new_value; - return true; - } - - /** - * Increments an integer config value directly in the database. - * - * Using this method instead of setting the new value directly avoids race - * conditions and unlike set_atomic it cannot fail. - * - * @param string $key The configuration option's name - * @param int $increment Amount to increment by - * @param bool $use_cache Whether this variable should be cached or if it - * changes too frequently to be efficiently cached. - */ - function increment($key, $increment, $use_cache = true) - { - if (!isset($this->config[$key])) - { - $this->set($key, '0', $use_cache); - } - - $sql_update = $this->db->cast_expr_to_string($this->db->cast_expr_to_bigint('config_value') . ' + ' . (int) $increment); - - $this->db->sql_query('UPDATE ' . $this->table . ' - SET config_value = ' . $sql_update . " - WHERE config_name = '" . $this->db->sql_escape($key) . "'"); - - if ($use_cache) - { - $this->cache->destroy('config'); - } - - $this->config[$key] += $increment; - } -} diff --git a/phpBB/includes/config/db_text.php b/phpBB/includes/config/db_text.php deleted file mode 100644 index b365cb5c77..0000000000 --- a/phpBB/includes/config/db_text.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php -/** -* -* @package phpBB3 -* @copyright (c) 2013 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 -* -*/ - -/** -* @ignore -*/ -if (!defined('IN_PHPBB')) -{ - exit; -} - -/** -* Manages configuration options with an arbitrary length value stored in a TEXT -* column. In constrast to class phpbb_config_db, values are never cached and -* prefetched, but every get operation sends a query to the database. -* -* @package phpBB3 -*/ -class phpbb_config_db_text -{ - /** - * Database connection - * @var phpbb_db_driver - */ - protected $db; - - /** - * Name of the database table used. - * @var string - */ - protected $table; - - /** - * @param phpbb_db_driver $db Database connection - * @param string $table Table name - */ - public function __construct(phpbb_db_driver $db, $table) - { - $this->db = $db; - $this->table = $this->db->sql_escape($table); - } - - /** - * Sets the configuration option with the name $key to $value. - * - * @param string $key The configuration option's name - * @param string $value New configuration value - * - * @return null - */ - public function set($key, $value) - { - $this->set_array(array($key => $value)); - } - - /** - * Gets the configuration value for the name $key. - * - * @param string $key The configuration option's name - * - * @return string|null String result on success - * null if there is no such option - */ - public function get($key) - { - $map = $this->get_array(array($key)); - - return isset($map[$key]) ? $map[$key] : null; - } - - /** - * Removes the configuration option with the name $key. - * - * @param string $key The configuration option's name - * - * @return null - */ - public function delete($key) - { - $this->delete_array(array($key)); - } - - /** - * Mass set configuration options: Receives an associative array, - * treats array keys as configuration option names and associated - * array values as their configuration option values. - * - * @param array $map Map from configuration names to values - * - * @return null - */ - public function set_array(array $map) - { - $this->db->sql_transaction('begin'); - - foreach ($map as $key => $value) - { - $sql = 'UPDATE ' . $this->table . " - SET config_value = '" . $this->db->sql_escape($value) . "' - WHERE config_name = '" . $this->db->sql_escape($key) . "'"; - $result = $this->db->sql_query($sql); - - if (!$this->db->sql_affectedrows($result)) - { - $sql = 'INSERT INTO ' . $this->table . ' ' . $this->db->sql_build_array('INSERT', array( - 'config_name' => $key, - 'config_value' => $value, - )); - $this->db->sql_query($sql); - } - } - - $this->db->sql_transaction('commit'); - } - - /** - * Mass get configuration options: Receives a set of configuration - * option names and returns the result as a key => value map where - * array keys are configuration option names and array values are - * associated config option values. - * - * @param array $keys Set of configuration option names - * - * @return array Map from configuration names to values - */ - public function get_array(array $keys) - { - $sql = 'SELECT * - FROM ' . $this->table . ' - WHERE ' . $this->db->sql_in_set('config_name', $keys, false, true); - $result = $this->db->sql_query($sql); - - $map = array(); - while ($row = $this->db->sql_fetchrow($result)) - { - $map[$row['config_name']] = $row['config_value']; - } - $this->db->sql_freeresult($result); - - return $map; - } - - /** - * Mass delete configuration options. - * - * @param array $keys Set of configuration option names - * - * @return null - */ - public function delete_array(array $keys) - { - $sql = 'DELETE - FROM ' . $this->table . ' - WHERE ' . $this->db->sql_in_set('config_name', $keys, false, true); - $result = $this->db->sql_query($sql); - } -} |