aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2011-01-11 23:55:10 +0100
committerNils Adermann <naderman@naderman.de>2011-01-12 00:21:12 +0100
commit129d3c53bc6f826ae9a9d484fda4f38f6963b375 (patch)
tree59f8fdb8586dff175c6eccbbe2661a3cc56d0aad
parent6b1e343d8dae618afd0cb04173749f005c10e376 (diff)
downloadforums-129d3c53bc6f826ae9a9d484fda4f38f6963b375.tar
forums-129d3c53bc6f826ae9a9d484fda4f38f6963b375.tar.gz
forums-129d3c53bc6f826ae9a9d484fda4f38f6963b375.tar.bz2
forums-129d3c53bc6f826ae9a9d484fda4f38f6963b375.tar.xz
forums-129d3c53bc6f826ae9a9d484fda4f38f6963b375.zip
[task/config-class] Correctly merge cached config with dynamically loaded data.
PHPBB3-9988
-rw-r--r--phpBB/includes/config/db.php6
-rw-r--r--tests/config/db_test.php11
2 files changed, 16 insertions, 1 deletions
diff --git a/phpBB/includes/config/db.php b/phpBB/includes/config/db.php
index 1e07e1f67f..a753d12cd0 100644
--- a/phpBB/includes/config/db.php
+++ b/phpBB/includes/config/db.php
@@ -52,7 +52,11 @@ class phpbb_config_db extends phpbb_config
FROM ' . $this->table . '
WHERE is_dynamic = 1';
$result = $this->db->sql_query($sql);
- $config += $this->db->sql_fetchrowset($result);
+
+ while ($row = $this->db->sql_fetchrow($result))
+ {
+ $config[$row['config_name']] = $row['config_value'];
+ }
$this->db->sql_freeresult($result);
}
else
diff --git a/tests/config/db_test.php b/tests/config/db_test.php
index 07f3bf8d5a..e291c05c8f 100644
--- a/tests/config/db_test.php
+++ b/tests/config/db_test.php
@@ -35,6 +35,17 @@ class phpbb_config_db_test extends phpbb_database_test_case
$this->assertEquals('42', $this->config['bar']);
}
+ public function test_load_cached()
+ {
+ $cache = new phpbb_mock_cache(array('config' => array('x' => 'y')));
+ $this->config = new phpbb_config_db($this->db, $cache, 'phpbb_config');
+
+ $this->assertTrue(!isset($this->config['foo']));
+ $this->assertEquals('42', $this->config['bar']);
+
+ $this->assertEquals('y', $this->config['x']);
+ }
+
public function test_offset_set()
{
$this->config['foo'] = 'x'; // temporary set