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(
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;
}
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
// 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
);
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;
}
}
$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);
$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, '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);
+ $r = run_update_function($x, 'update');
if (!$r) {
break;
}