diff options
author | Andreas Fischer <bantu@phpbb.com> | 2011-01-12 01:49:44 +0100 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2011-01-12 01:49:44 +0100 |
commit | a3673789402eae83b94860c87747091125701f78 (patch) | |
tree | c95893f38eb1c52df491e2bab2b986bb51f21883 /phpBB/includes/cache | |
parent | 30dacf8e4e313355c4694db2455e453a0ed62a11 (diff) | |
parent | f11579549d0250733f4a2bd1759adc2db6d587d3 (diff) | |
download | forums-a3673789402eae83b94860c87747091125701f78.tar forums-a3673789402eae83b94860c87747091125701f78.tar.gz forums-a3673789402eae83b94860c87747091125701f78.tar.bz2 forums-a3673789402eae83b94860c87747091125701f78.tar.xz forums-a3673789402eae83b94860c87747091125701f78.zip |
Merge branch 'task/naderman/config-class' into develop
* task/naderman/config-class:
[task/config-class] Do not create multiple cache driver instances.
[task/config-class] Add an attribute for the table name in phpbb_config_db.
[task/config-class] Correctly merge cached config with dynamically loaded data.
[task/config-class] Always specify the config table to use.
[task/config-class] Fix db config constructor param order
[task/config-class] Implemented a config class to replace the global array.
Diffstat (limited to 'phpBB/includes/cache')
-rw-r--r-- | phpBB/includes/cache/service.php | 106 |
1 files changed, 40 insertions, 66 deletions
diff --git a/phpBB/includes/cache/service.php b/phpBB/includes/cache/service.php index 424606bfc8..68026c8647 100644 --- a/phpBB/includes/cache/service.php +++ b/phpBB/includes/cache/service.php @@ -2,7 +2,6 @@ /** * * @package acm -* @version $Id$ * @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @@ -22,66 +21,41 @@ if (!defined('IN_PHPBB')) */ class phpbb_cache_service { - private $acm; + private $driver; - public function __construct(phpbb_cache_driver_interface $acm = null) - { - $this->set_acm($acm); - } - - public function set_acm(phpbb_cache_driver_interface $acm) + /** + * Creates a cache service around a cache driver + * + * @param phpbb_cache_driver_interface $driver The cache driver + */ + public function __construct(phpbb_cache_driver_interface $driver = null) { - $this->acm = $acm; + $this->set_driver($driver); } - public function __call($method, $arguments) + /** + * Returns the cache driver used by this cache service. + * + * @return phpbb_cache_driver_interface The cache driver + */ + public function get_driver() { - return call_user_func_array(array($this->acm, $method), $arguments); + return $this->driver; } /** - * Get config values + * Replaces the cache driver used by this cache service. + * + * @param phpbb_cache_driver_interface $driver The cache driver */ - function obtain_config() + public function set_driver(phpbb_cache_driver_interface $driver) { - global $db; - - if (($config = $this->acm->get('config')) !== false) - { - $sql = 'SELECT config_name, config_value - FROM ' . CONFIG_TABLE . ' - WHERE is_dynamic = 1'; - $result = $db->sql_query($sql); - - while ($row = $db->sql_fetchrow($result)) - { - $config[$row['config_name']] = $row['config_value']; - } - $db->sql_freeresult($result); - } - else - { - $config = $cached_config = array(); - - $sql = 'SELECT config_name, config_value, is_dynamic - FROM ' . CONFIG_TABLE; - $result = $db->sql_query($sql); - - while ($row = $db->sql_fetchrow($result)) - { - if (!$row['is_dynamic']) - { - $cached_config[$row['config_name']] = $row['config_value']; - } - - $config[$row['config_name']] = $row['config_value']; - } - $db->sql_freeresult($result); - - $this->acm->put('config', $cached_config); - } + $this->driver = $driver; + } - return $config; + public function __call($method, $arguments) + { + return call_user_func_array(array($this->driver, $method), $arguments); } /** @@ -92,7 +66,7 @@ class phpbb_cache_service { global $db; - if (($censors = $this->acm->get('_word_censors')) === false) + if (($censors = $this->driver->get('_word_censors')) === false) { $sql = 'SELECT word, replacement FROM ' . WORDS_TABLE; @@ -106,7 +80,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_word_censors', $censors); + $this->driver->put('_word_censors', $censors); } return $censors; @@ -117,7 +91,7 @@ class phpbb_cache_service */ function obtain_icons() { - if (($icons = $this->acm->get('_icons')) === false) + if (($icons = $this->driver->get('_icons')) === false) { global $db; @@ -137,7 +111,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_icons', $icons); + $this->driver->put('_icons', $icons); } return $icons; @@ -148,7 +122,7 @@ class phpbb_cache_service */ function obtain_ranks() { - if (($ranks = $this->acm->get('_ranks')) === false) + if (($ranks = $this->driver->get('_ranks')) === false) { global $db; @@ -178,7 +152,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_ranks', $ranks); + $this->driver->put('_ranks', $ranks); } return $ranks; @@ -193,7 +167,7 @@ class phpbb_cache_service */ function obtain_attach_extensions($forum_id) { - if (($extensions = $this->acm->get('_extensions')) === false) + if (($extensions = $this->driver->get('_extensions')) === false) { global $db; @@ -237,7 +211,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_extensions', $extensions); + $this->driver->put('_extensions', $extensions); } // Forum post @@ -298,7 +272,7 @@ class phpbb_cache_service */ function obtain_bots() { - if (($bots = $this->acm->get('_bots')) === false) + if (($bots = $this->driver->get('_bots')) === false) { global $db; @@ -337,7 +311,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_bots', $bots); + $this->driver->put('_bots', $bots); } return $bots; @@ -358,7 +332,7 @@ class phpbb_cache_service foreach ($parsed_items as $key => $parsed_array) { - $parsed_array = $this->acm->get('_cfg_' . $key . '_' . $theme[$key . '_path']); + $parsed_array = $this->driver->get('_cfg_' . $key . '_' . $theme[$key . '_path']); if ($parsed_array === false) { @@ -384,7 +358,7 @@ class phpbb_cache_service $parsed_array = parse_cfg_file($filename); $parsed_array['filetime'] = @filemtime($filename); - $this->acm->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array); + $this->driver->put('_cfg_' . $key . '_' . $theme[$key . '_path'], $parsed_array); } $parsed_items[$key] = $parsed_array; } @@ -397,7 +371,7 @@ class phpbb_cache_service */ function obtain_disallowed_usernames() { - if (($usernames = $this->acm->get('_disallowed_usernames')) === false) + if (($usernames = $this->driver->get('_disallowed_usernames')) === false) { global $db; @@ -412,7 +386,7 @@ class phpbb_cache_service } $db->sql_freeresult($result); - $this->acm->put('_disallowed_usernames', $usernames); + $this->driver->put('_disallowed_usernames', $usernames); } return $usernames; @@ -425,7 +399,7 @@ class phpbb_cache_service { global $phpbb_root_path, $phpEx; - if (($hook_files = $this->acm->get('_hooks')) === false) + if (($hook_files = $this->driver->get('_hooks')) === false) { $hook_files = array(); @@ -444,7 +418,7 @@ class phpbb_cache_service closedir($dh); } - $this->acm->put('_hooks', $hook_files); + $this->driver->put('_hooks', $hook_files); } return $hook_files; |