[feature/migrations] Call revert correctly when purging an extension

PHPBB3-11318
This commit is contained in:
Nathaniel Guse 2013-02-09 20:05:39 -06:00
parent a8da6b89e9
commit fc4d5f74c0

View file

@ -522,11 +522,13 @@ class phpbb_extension_manager
protected function handle_migrations($extension_name, $mode) protected function handle_migrations($extension_name, $mode)
{ {
$migrations_path = $this->phpbb_root_path . $this->get_extension_path($extension_name) . 'migrations/'; $migrations_path = $this->phpbb_root_path . $this->get_extension_path($extension_name) . 'migrations/';
if (file_exists($migrations_path) && is_dir($migrations_path)) if (!file_exists($migrations_path) || !is_dir($migrations_path))
{ {
$this->migrator->load_migrations($migrations_path); return true;
} }
$migrations = $this->migrator->load_migrations($migrations_path);
// What is a safe limit of execution time? Half the max execution time should be safe. // What is a safe limit of execution time? Half the max execution time should be safe.
$safe_time_limit = (ini_get('max_execution_time') / 2); $safe_time_limit = (ini_get('max_execution_time') / 2);
$start_time = time(); $start_time = time();
@ -546,14 +548,17 @@ class phpbb_extension_manager
} }
else if ($mode == 'purge') else if ($mode == 'purge')
{ {
while ($this->migrator->migration_state() !== false) foreach ($migrations as $migration)
{ {
$this->migrator->revert(); while ($this->migrator->migration_state($migration) !== false)
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
if ((time() - $start_time) >= $safe_time_limit)
{ {
return false; $this->migrator->revert($migration);
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
if ((time() - $start_time) >= $safe_time_limit)
{
return false;
}
} }
} }
} }