aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorOliver Schramm <oliver.schramm97@gmail.com>2016-08-11 23:28:54 +0200
committerOliver Schramm <oliver.schramm97@gmail.com>2016-08-11 23:28:54 +0200
commit03be89ebd7bfd95e8586d0d13076a90afec243ee (patch)
tree22843d02cf0c140c2d9eb1dab1e3d9fea80fa734 /phpBB
parent210310b584a0bd816132efa3d8f1ce082efebf88 (diff)
downloadforums-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.php22
-rw-r--r--phpBB/phpbb/install/module/update_database/task/update.php19
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)
{