get("upgrade_token", null))) { $session->set("upgrade_token", $upgrade_token = md5(rand())); } // If the upgrade token exists, then bless this session if (file_exists(TMPPATH . $upgrade_token)) { $session->set("can_upgrade", true); @unlink(TMPPATH . $upgrade_token); } $available_upgrades = 0; foreach (module::available() as $module) { if ($module->version && $module->version != $module->code_version) { $available_upgrades++; } } $view = new View("upgrader.html"); $view->can_upgrade = identity::active_user()->admin || $session->get("can_upgrade"); $view->upgrade_token = $upgrade_token; $view->available = module::available(); $view->done = $available_upgrades == 0; print $view; } public function upgrade() { if (php_sapi_name() == "cli") { // @todo this may screw up some module installers, but we don't have a better answer at // this time. $_SERVER["HTTP_HOST"] = "example.com"; } else if (!identity::active_user()->admin && !Session::instance()->get("can_upgrade", false)) { access::forbidden(); } $available = module::available(); // Upgrade gallery first $gallery = $available["gallery"]; if ($gallery->code_version != $gallery->version) { module::upgrade("gallery"); module::activate("gallery"); } // Then upgrade the rest foreach (module::available() as $id => $module) { if ($id == "gallery") { continue; } if ($module->active && $module->code_version != $module->version) { module::upgrade($id); } } if (php_sapi_name() == "cli") { print "Upgrade complete\n"; } else { url::redirect("upgrader"); } } }