diff options
author | Oliver Schramm <oliver.schramm97@gmail.com> | 2016-08-11 23:28:54 +0200 |
---|---|---|
committer | Oliver Schramm <oliver.schramm97@gmail.com> | 2016-08-11 23:28:54 +0200 |
commit | 03be89ebd7bfd95e8586d0d13076a90afec243ee (patch) | |
tree | 22843d02cf0c140c2d9eb1dab1e3d9fea80fa734 /phpBB | |
parent | 210310b584a0bd816132efa3d8f1ce082efebf88 (diff) | |
download | forums-03be89ebd7bfd95e8586d0d13076a90afec243ee.tar forums-03be89ebd7bfd95e8586d0d13076a90afec243ee.tar.gz forums-03be89ebd7bfd95e8586d0d13076a90afec243ee.tar.bz2 forums-03be89ebd7bfd95e8586d0d13076a90afec243ee.tar.xz forums-03be89ebd7bfd95e8586d0d13076a90afec243ee.zip |
[ticket/14742] Fix progress bar in database updater
Because of the new way, schema update steps are handled, the already
misleading progress bar was even more misleading. This should fix it.
PHPBB3-14742
Diffstat (limited to 'phpBB')
-rw-r--r-- | phpBB/phpbb/db/migrator.php | 22 | ||||
-rw-r--r-- | phpBB/phpbb/install/module/update_database/task/update.php | 19 |
2 files changed, 38 insertions, 3 deletions
diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php index 89f05f7b40..9e76668655 100644 --- a/phpBB/phpbb/db/migrator.php +++ b/phpBB/phpbb/db/migrator.php @@ -205,6 +205,28 @@ class migrator } /** + * Get the list of available and not installed migration class names + * + * @return array + */ + public function get_installable_migrations() + { + $unfinished_migrations = array(); + + foreach ($this->migrations as $name) + { + if (!isset($this->migration_state[$name]) || + !$this->migration_state[$name]['migration_schema_done'] || + !$this->migration_state[$name]['migration_data_done']) + { + $unfinished_migrations[] = $name; + } + } + + return $unfinished_migrations; + } + + /** * Runs a single update step from the next migration to be applied. * * The update step can either be a schema or a (partial) data update. To diff --git a/phpBB/phpbb/install/module/update_database/task/update.php b/phpBB/phpbb/install/module/update_database/task/update.php index 9fed2317e9..d167181125 100644 --- a/phpBB/phpbb/install/module/update_database/task/update.php +++ b/phpBB/phpbb/install/module/update_database/task/update.php @@ -140,7 +140,14 @@ class update extends task_base ->get_classes(); $this->migrator->set_migrations($migrations); - $migration_count = count($this->migrator->get_migrations()); + + $migration_count = $this->installer_config->get('database_update_migrations', -1); + if ($migration_count < 0) + { + $migration_count = count($this->migrator->get_installable_migrations()); + $this->installer_config->set('database_update_migrations', $migration_count); + } + $this->iohandler->set_task_count($migration_count, true); $this->installer_config->set_task_progress_count($migration_count); $progress_count = $this->installer_config->get('database_update_count', 0); @@ -150,8 +157,14 @@ class update extends task_base try { $this->migrator->update(); - $progress_count++; - $this->iohandler->set_progress('STAGE_UPDATE_DATABASE', $progress_count); + + $last_run_migration = $this->migrator->get_last_run_migration(); + + if ($last_run_migration['state']['migration_data_done']) + { + $progress_count++; + $this->iohandler->set_progress('STAGE_UPDATE_DATABASE', $progress_count); + } } catch (exception $e) { |