From 8b8e09f4d52cfa2d9d951d827114b2ae510dbfc8 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 26 Jul 2014 11:50:28 +0200 Subject: [PATCH] [ticket/12870] Create the migrations table in db:migrate PHPBB3-12870 --- phpBB/config/console.yml | 2 ++ phpBB/phpbb/console/command/db/migrate.php | 27 +++++++++++++++++++++- phpBB/phpbb/extension/manager.php | 8 +++---- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/phpBB/config/console.yml b/phpBB/config/console.yml index 540908164a..7c3943aee6 100644 --- a/phpBB/config/console.yml +++ b/phpBB/config/console.yml @@ -84,6 +84,8 @@ services: - @config - @cache - @log + - @dbal.tools + - %core.table_prefix% tags: - { name: console.command } diff --git a/phpBB/phpbb/console/command/db/migrate.php b/phpBB/phpbb/console/command/db/migrate.php index 758b125b13..29f0fe7c16 100644 --- a/phpBB/phpbb/console/command/db/migrate.php +++ b/phpBB/phpbb/console/command/db/migrate.php @@ -32,13 +32,21 @@ class migrate extends \phpbb\console\command\command /** @var \phpbb\log\log */ protected $log; - function __construct(\phpbb\user $user, \phpbb\db\migrator $migrator, \phpbb\extension\manager $extension_manager, \phpbb\config\config $config, \phpbb\cache\service $cache, \phpbb\log\log $log) + /** @var \phpbb\db\tools */ + protected $db_tools; + + /** @var string */ + protected $table_prefix; + + function __construct(\phpbb\user $user, \phpbb\db\migrator $migrator, \phpbb\extension\manager $extension_manager, \phpbb\config\config $config, \phpbb\cache\service $cache, \phpbb\log\log $log, \phpbb\db\tools $db_tools, $table_prefix) { $this->migrator = $migrator; $this->extension_manager = $extension_manager; $this->config = $config; $this->cache = $cache; $this->log = $log; + $this->db_tools = $db_tools; + $this->table_prefix = $table_prefix; parent::__construct($user); $this->user->add_lang(array('common', 'install', 'migrator')); } @@ -53,6 +61,23 @@ class migrate extends \phpbb\console\command\command protected function execute(InputInterface $input, OutputInterface $output) { + // Make sure migrations have been installed. + if (!$this->db_tools->sql_table_exists($this->table_prefix . 'migrations')) + { + $this->db_tools->sql_create_table($this->table_prefix . 'migrations', array( + 'COLUMNS' => array( + 'migration_name' => array('VCHAR', ''), + 'migration_depends_on' => array('TEXT', ''), + 'migration_schema_done' => array('BOOL', 0), + 'migration_data_done' => array('BOOL', 0), + 'migration_data_state' => array('TEXT', ''), + 'migration_start_time' => array('TIMESTAMP', 0), + 'migration_end_time' => array('TIMESTAMP', 0), + ), + 'PRIMARY_KEY' => 'migration_name', + )); + } + $this->load_migrations(); $orig_version = $this->config['version']; while (!$this->migrator->finished()) diff --git a/phpBB/phpbb/extension/manager.php b/phpBB/phpbb/extension/manager.php index b19eb9f8a3..98b2654980 100644 --- a/phpBB/phpbb/extension/manager.php +++ b/phpBB/phpbb/extension/manager.php @@ -77,11 +77,9 @@ class manager { $this->extensions = array(); - // Do not try to load any extensions when installing or updating - // Note: database updater invokes this code, and in 3.0 - // there is no extension table therefore the rest of this function - // fails - if (defined('IN_INSTALL')) + // Do not try to load any extensions if the extension table + // does not exist. (The table is crated by the firsts migrations). + if (version_compare($this->config['version'], '3.1.0-dev', '<')) { return; }