aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--boot.php17
-rw-r--r--mod/admin.php11
2 files changed, 19 insertions, 9 deletions
diff --git a/boot.php b/boot.php
index 37c530e81..c2c1088e4 100644
--- a/boot.php
+++ b/boot.php
@@ -539,6 +539,8 @@ function check_config(&$a) {
$current = intval(DB_UPDATE_VERSION);
if(($stored < $current) && file_exists('update.php')) {
+ load_config('database');
+
// We're reporting a different version than what is currently installed.
// Run any existing update scripts to bring the database up to current.
@@ -552,6 +554,21 @@ function check_config(&$a) {
for($x = $stored; $x < $current; $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.
+
+ if(get_config('database','update_' . $x))
+ break;
+ set_config('database','update_' . $x, '1');
+
+ // call the specific update
+
$func = 'update_' . $x;
$func($a);
}
diff --git a/mod/admin.php b/mod/admin.php
index ebef1ccb9..f178e67f6 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -5,16 +5,9 @@
*/
require_once("include/remoteupdate.php");
-function admin_init(&$a) {
- if(!is_site_admin()) {
- notice( t('Permission denied.') . EOL);
- return;
- }
-}
-
function admin_post(&$a){
if(!is_site_admin()) {
- return login(false);
+ return;
}
// urls
@@ -672,7 +665,7 @@ function admin_page_logs(&$a){
function admin_page_remoteupdate_post(&$a) {
// this function should be called via ajax post
if(!is_site_admin()) {
- return login(false);
+ return;
}