public function switchAction($action, $httpVars, $fileVars) { $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"]) || !empty($this->pluginConf["UPDATE_SITE_USER"])) { AjaXplorerUpgrader::configureProxy($this->pluginConf["PROXY_HOST"], $this->pluginConf["PROXY_USER"], $this->pluginConf["PROXY_PASS"], $this->pluginConf["UPDATE_SITE_USER"], $this->pluginConf["UPDATE_SITE_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 "display_upgrade_note": $url = $httpVars["url"]; $context = AjaXplorerUpgrader::getContext(); if ($context != null) { $content = file_get_contents($url, null, $context); } else { $content = file_get_contents($url); } echo $content; 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") { $lang = ConfService::getLanguage(); $file = $this->getBaseDir() . "/howto/linux_en.html"; if ($lang != "en" && is_file($this->getBaseDir() . "/howto/linux_{$lang}.html")) { $file = $this->getBaseDir() . "/howto/linux_{$lang}.html"; } $content = file_get_contents($file); print $content; 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; } }