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
parent b26da6096b
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;
}
}

View File

@ -69,8 +69,6 @@ HELP;
$output = DBStructure::update(true, false);
break;
case "update":
$output = DBStructure::update(true, true);
$build = Core\Config::get('system', 'build');
if (empty($build)) {
Core\Config::set('system', 'build', DB_UPDATE_VERSION);
@ -80,9 +78,19 @@ HELP;
$stored = intval($build);
$current = intval(DB_UPDATE_VERSION);
// run any left update_nnnn functions in update.php
// run the pre_update_nnnn functions in update.php
for ($x = $stored; $x < $current; $x ++) {
$r = run_update_function($x);
$r = run_update_function($x, 'pre_update');
if (!$r) {
break;
}
}
$output = DBStructure::update(true, true);
// run the update_nnnn functions in update.php
for ($x = $stored; $x < $current; $x ++) {
$r = run_update_function($x, 'update');
if (!$r) {
break;
}

View File

@ -33,6 +33,8 @@ require_once 'include/dba.php';
* 1. Create a function "update_4712()" here in the update.php
* 2. Apply the needed structural changes in src/Database/DBStructure.php
* 3. Set DB_UPDATE_VERSION in boot.php to 4712.
*
* If you need to run a script before the database update, name the function "pre_update_4712()"
*/
function update_1178() {