]> git.mxchange.org Git - friendica.git/commitdiff
We now have a pre update script (#5425)
authorMichael Vogel <icarus@dabo.de>
Fri, 20 Jul 2018 19:47:16 +0000 (21:47 +0200)
committerHypolite Petovan <mrpetovan@eml.cc>
Fri, 20 Jul 2018 19:47:16 +0000 (15:47 -0400)
* We now have a pre update script

* Some optimized stuff

boot.php
src/Core/Console/DatabaseStructure.php
update.php

index 292e5a94118a36d0eee5cb0802b5139486a8214f..4c3a8c5ca88f371647cd3e02d675218c17d5c390 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -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;
        }
 }
index ee8370dfa154c190c095b2dfd649da273c8d1f5b..1b64622dbff105c60d8e5d4f420e9e15a08669b9 100644 (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;
                                        }
index 4fcb9d94e4a3ea26cb8742a875ff3725a069eb52..ee70a7a262448ddd152923c7ff5b60c790278820 100644 (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() {