[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)
{
$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.
$safe_time_limit = (ini_get('max_execution_time') / 2);
$start_time = time();
@ -546,14 +548,17 @@ class phpbb_extension_manager
}
else if ($mode == 'purge')
{
while ($this->migrator->migration_state() !== false)
foreach ($migrations as $migration)
{
$this->migrator->revert();
// 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)
while ($this->migrator->migration_state($migration) !== false)
{
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;
}
}
}
}