mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-22 16:22:58 +02:00
[ticket/11698] Moving all autoloadable files to phpbb/
PHPBB3-11698
This commit is contained in:
170
phpBB/phpbb/config/config.php
Normal file
170
phpBB/phpbb/config/config.php
Normal file
@@ -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;
|
||||
}
|
||||
}
|
207
phpBB/phpbb/config/db.php
Normal file
207
phpBB/phpbb/config/db.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
163
phpBB/phpbb/config/db_text.php
Normal file
163
phpBB/phpbb/config/db_text.php
Normal file
@@ -0,0 +1,163 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user