public function switchAction($action, $httpVars, $fileVars) { if (!isset($this->actions[$action])) { return; } $loggedUser = AuthService::getLoggedUser(); if (AuthService::usersEnabled() && !$loggedUser->isAdmin()) { return; } require_once AJXP_INSTALL_PATH . "/" . AJXP_PLUGINS_FOLDER . "/action.updater/class.AjaXplorerUpgrader.php"; if (!empty($this->pluginConf["PROXY_HOST"])) { AjaXplorerUpgrader::configureProxy($this->pluginConf["PROXY_HOST"], $this->pluginConf["PROXY_USER"], $this->pluginConf["PROXY_PASS"]); } switch ($action) { case "migrate_metaserial": $dryRun = !isset($httpVars["real_run"]); AjaXplorerUpgrader::migrateMetaSerialPlugin($httpVars["repository_id"], $dryRun); break; case "get_upgrade_path": header("Content-type: application/json"); print AjaXplorerUpgrader::getUpgradePath($this->pluginConf["UPDATE_SITE"], "json", $this->pluginConf["UPDATE_CHANNEL"]); break; case "test_upgrade_scripts": if (!AJXP_SERVER_DEBUG || AuthService::getLoggedUser() == null || !AuthService::getLoggedUser()->isAdmin()) { break; } $upgrader = new AjaXplorerUpgrader("", "", ""); $upgrader->testUpgradeScripts(); break; case "perform_upgrade": AJXP_Utils::safeIniSet("output_buffering", "Off"); if (AJXP_PACKAGING != "zip") { print "Your installation is managed directly via os packages, you should not upgrade manually."; break; } $res = AjaXplorerUpgrader::getUpgradePath($this->pluginConf["UPDATE_SITE"], "php", $this->pluginConf["UPDATE_CHANNEL"]); if (!count($res["packages"])) { print "No update is necessary!"; break; } include dirname(__FILE__) . "/output_head.html"; foreach ($res["packages"] as $index => $zipPackage) { print "<div class='main_step'>Applying upgrade " . basename($zipPackage) . "</div>"; $u = new AjaXplorerUpgrader($zipPackage, $res["hashes"][$index], $res["hash_method"], explode(",", $this->pluginConf["PRESERVE_FILES"])); $errors = false; while ($u->hasNextStep()) { set_time_limit(180); print "<div class='upgrade_step'><div class='upgrade_title'>" . $u->currentStepTitle . "</div>"; $u->execute(); if ($u->error != null) { print "<div class='upgrade_result error'>- Error : " . $u->error . "</div>"; $errors = true; break; } else { print "<div class='upgrade_result success'>- " . $u->result . "</div>"; } print "</div>"; // FLUSH OUTPUT, SCROLL DOWN print str_repeat(' ', 300); print '<script type="text/javascript">doScroll();</script>'; flush(); sleep(0.5); } if ($errors) { break; } } print '<script type="text/javascript">replaceTop();</script>'; print str_repeat(' ', 300); flush(); break; } }