+if(!function_exists('run_update_function')){
+ function run_update_function($x) {
+ if(function_exists('update_' . $x)) {
+
+ // 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
+ // after first checking to see if somebody else already has.
+
+ // If the update fails or times-out completely you may need to
+ // delete the config entry to try again.
+
+ $t = get_config('database','update_' . $x);
+ if($t !== false)
+ return false;
+ set_config('database','update_' . $x, time());
+
+ // call the specific update
+
+ $func = 'update_' . $x;
+ $retval = $func();
+
+ if($retval) {
+ //send the administrator an e-mail
+ update_fail(
+ $x,
+ sprintf(t('Update %s failed. See error logs.'), $x)
+ );
+ return false;
+ } else {
+ set_config('database','update_' . $x, 'success');
+ set_config('system','build', $x + 1);
+ return true;
+ }
+ } else {
+ set_config('database','update_' . $x, 'success');
+ set_config('system','build', $x + 1);
+ return true;
+ }
+ return true;
+ }
+}