We now have a pre update script (#5425)

* We now have a pre update script

* Some optimized stuff
This commit is contained in:
Michael Vogel 2018-07-20 21:47:16 +02:00 committed by Hypolite Petovan
commit 4bbcb61a9e
3 changed files with 40 additions and 19 deletions

View file

@ -703,10 +703,17 @@ function update_db()
return;
}
// run the pre_update_nnnn functions in update.php
for ($x = $stored + 1; $x <= $current; $x++) {
$r = run_update_function($x, 'pre_update');
if (!$r) {
break;
}
}
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, time());
// run update routine
// it update the structure in one call
// update the structure in one call
$retval = DBStructure::update(false, true);
if ($retval) {
DBStructure::updateFail(
@ -718,9 +725,9 @@ function update_db()
Config::set('database', 'dbupdate_' . DB_UPDATE_VERSION, 'success');
}
// run any left update_nnnn functions in update.php
// run the update_nnnn functions in update.php
for ($x = $stored + 1; $x <= $current; $x++) {
$r = run_update_function($x);
$r = run_update_function($x, 'update');
if (!$r) {
break;
}
@ -731,9 +738,11 @@ function update_db()
return;
}
function run_update_function($x)
function run_update_function($x, $prefix)
{
if (function_exists('update_' . $x)) {
$funcname = $prefix . '_' . $x;
if (function_exists($funcname)) {
// There could be a lot of processes running or about to run.
// We want exactly one process to run the update command.
// So store the fact that we're taking responsibility
@ -741,16 +750,14 @@ function run_update_function($x)
// If the update fails or times-out completely you may need to
// delete the config entry to try again.
$t = Config::get('database', 'update_' . $x);
$t = Config::get('database', $funcname);
if (!is_null($t)) {
return false;
}
Config::set('database', 'update_' . $x, time());
Config::set('database', $funcname, time());
// call the specific update
$func = 'update_' . $x;
$retval = $func();
$retval = $funcname();
if ($retval) {
//send the administrator an e-mail
@ -760,13 +767,17 @@ function run_update_function($x)
);
return false;
} else {
Config::set('database', 'update_' . $x, 'success');
Config::set('system', 'build', $x);
Config::set('database', $funcname, 'success');
if ($post_update) {
Config::set('system', 'build', $x);
}
return true;
}
} else {
Config::set('database', 'update_' . $x, 'success');
Config::set('system', 'build', $x);
Config::set('database', $funcname, 'success');
if ($post_update) {
Config::set('system', 'build', $x);
}
return true;
}
}