Browse Source

We now have a pre update script (#5425)

* We now have a pre update script

* Some optimized stuff
tags/2018.09
Michael Vogel 2 years ago
committed by Hypolite Petovan
parent
commit
4bbcb61a9e
3 changed files with 40 additions and 19 deletions
  1. +26
    -15
      boot.php
  2. +12
    -4
      src/Core/Console/DatabaseStructure.php
  3. +2
    -0
      update.php

+ 26
- 15
boot.php 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;
}
}


+ 12
- 4
src/Core/Console/DatabaseStructure.php 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, '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;
}


+ 2
- 0
update.php 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() {


Loading…
Cancel
Save