diff --git a/phpBB/phpbb/config/db.php b/phpBB/phpbb/config/db.php index 26489bdd34..4efe0d2810 100644 --- a/phpBB/phpbb/config/db.php +++ b/phpBB/phpbb/config/db.php @@ -13,20 +13,23 @@ namespace phpbb\config; +use phpbb\cache\driver\driver_interface as cache_interface; +use phpbb\db\driver\driver_interface as db_interface; + /** * Configuration container class */ -class db extends \phpbb\config\config +class db extends config { /** * Cache instance - * @var \phpbb\cache\driver\driver_interface + * @var cache_interface */ protected $cache; /** * Database connection - * @var \phpbb\db\driver\driver_interface + * @var db_interface */ protected $db; @@ -39,16 +42,28 @@ class db extends \phpbb\config\config /** * Creates a configuration container with a default set of values * - * @param \phpbb\db\driver\driver_interface $db Database connection - * @param \phpbb\cache\driver\driver_interface $cache Cache instance + * @param db_interface $db Database connection + * @param cache_interface $cache Cache instance * @param string $table Configuration table name */ - public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\cache\driver\driver_interface $cache, $table) + public function __construct(db_interface $db, cache_interface $cache, $table) { $this->db = $db; $this->cache = $cache; $this->table = $table; + $this->initialise($cache); + + parent::__construct($this->config); + } + + /** + * Initialise config with database and/or cached entries + * + * @param cache_interface $cache + */ + public function initialise(cache_interface $cache) + { if (($config = $cache->get('config')) !== false) { $sql = 'SELECT config_name, config_value @@ -84,7 +99,7 @@ class db extends \phpbb\config\config $cache->put('config', $cached_config); } - parent::__construct($config); + $this->config = $config; } /** @@ -93,7 +108,7 @@ class db extends \phpbb\config\config * @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 + * @return void */ public function delete($key, $use_cache = true) { diff --git a/phpBB/phpbb/console/command/db/migrate.php b/phpBB/phpbb/console/command/db/migrate.php index e60fb83887..cfa506afe2 100644 --- a/phpBB/phpbb/console/command/db/migrate.php +++ b/phpBB/phpbb/console/command/db/migrate.php @@ -72,6 +72,10 @@ class migrate extends \phpbb\console\command\db\migration_command $this->migrator->create_migrations_table(); $this->cache->purge(); + if ($this->config instanceof \phpbb\config\db) + { + $this->config->initialise($this->cache->get_driver()); + } $this->load_migrations(); $orig_version = $this->config['version'];