diff options
| author | Igor Wiedler <igor@wiedler.ch> | 2013-07-14 11:34:58 -0400 |
|---|---|---|
| committer | Igor Wiedler <igor@wiedler.ch> | 2013-07-14 11:34:58 -0400 |
| commit | f6865dc33a8cedb7d21a64401ed80d2edbac36bd (patch) | |
| tree | 66aa645c4d86636f0bce04a7125a7757a466b224 /phpBB/phpbb/config/config.php | |
| parent | fa3cdb6bf2cfdca9c26168bd258752718bc8a43f (diff) | |
| parent | c15bde161a93fc2abc48cacd7e5a71c682880e52 (diff) | |
| download | forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.gz forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.bz2 forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.tar.xz forums-f6865dc33a8cedb7d21a64401ed80d2edbac36bd.zip | |
Merge remote-tracking branch 'upstream/develop' into ticket/11574
* upstream/develop: (575 commits)
[ticket/11702] Fix forum_posts left over for link-click counts in viewforum.php
[ticket/11696] Move file to new directory
[ticket/11696] Rename constructor to __construct()
[ticket/11696] Remove manual loading of db_tools in extension controller test
[ticket/11696] Rename db_tools.php so it can be autoloaded
[ticket/11698] Moving all autoloadable files to phpbb/
[ticket/11694] Do not locate assets with root path
[ticket/11692] Don't update search_type in dev migration if already appended
[ticket/11675] Fix template loop
[ticket/11690] Old module class names may get autoloaded by class_exists
[ticket/9649] Display information on index for moderators on unapproved posts
[ticket/10999] Fix assets_version in ACP
[prep-release-3.0.12] More changelog items for the 3.0.12 release.
[ticket/11687] Add assets_version to phpbb_config
[ticket/11686] Not checking for phpBB Debug errors on functional tests
[ticket/11670] Consistency with logo: Replace "phpBB(tm)" with "phpBB(R)".
[ticket/11674] Do not include vendor folder if there are no dependencies.
[ticket/11685] Remove logout confirmation page
[ticket/11684] Remove useless confirmation page after login and admin login
[ticket/9657] Define user before injecting
...
Conflicts:
phpBB/includes/functions_container.php
phpBB/install/database_update.php
phpBB/install/index.php
Diffstat (limited to 'phpBB/phpbb/config/config.php')
| -rw-r--r-- | phpBB/phpbb/config/config.php | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/phpBB/phpbb/config/config.php b/phpBB/phpbb/config/config.php new file mode 100644 index 0000000000..4b533dd55c --- /dev/null +++ b/phpBB/phpbb/config/config.php @@ -0,0 +1,170 @@ +<?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; + } +} |
