public function actionIndex() { if (EnvUtil::getRequest("op")) { $operation = EnvUtil::getRequest("op"); $operations = array("checking", "patch", "showupgrade"); if (!in_array($operation, $operations)) { exit; } switch ($operation) { case "checking": $upgradeStep = Cache::model()->fetchByPk("upgrade_step"); $upgradeStep["cachevalue"] = unserialize($upgradeStep["cachevalue"]); $isExistStep = !empty($upgradeStep["cachevalue"]) && !empty($upgradeStep["cachevalue"]["step"]); if (!EnvUtil::getRequest("rechecking") && $isExistStep) { $param = array("op" => $upgradeStep["cachevalue"]["operation"], "version" => $upgradeStep["cachevalue"]["version"], "locale" => $upgradeStep["cachevalue"]["locale"], "charset" => $upgradeStep["cachevalue"]["charset"], "release" => $upgradeStep["cachevalue"]["release"], "step" => $upgradeStep["cachevalue"]["step"]); $data = array("url" => $this->createUrl("upgrade/index", $param), "stepName" => UpgradeUtil::getStepName($upgradeStep["cachevalue"]["step"])); $this->render("upgradeContinue", array("data" => $data)); } else { Cache::model()->deleteByPk("upgrade_step"); UpgradeUtil::checkUpgrade(); $url = $this->createUrl("upgrade/index", array("op" => "showupgrade")); $this->redirect($url); } break; case "showupgrade": $result = $this->processingUpgradeList(); if ($result["isHaveUpgrade"]) { $this->render("upgradeShow", $result); } else { $this->render("upgradeNewest"); } break; case "patch": $step = EnvUtil::getRequest("step"); $step = intval($step) ? $step : 1; $version = trim($_GET["version"]); $release = trim($_GET["release"]); $locale = trim($_GET["locale"]); $charset = trim($_GET["charset"]); $upgradeInfo = $upgradeStep = array(); $upgradeStepRecord = Cache::model()->fetchByPk("upgrade_step"); $upgradeStep = unserialize($upgradeStepRecord["cachevalue"]); $upgradeStep["step"] = isset($upgradeStep["step"]) ? intval($upgradeStep["step"]) : $step; $upgradeStep["operation"] = $operation; $upgradeStep["version"] = $version; $upgradeStep["release"] = $release; $upgradeStep["charset"] = $charset; $upgradeStep["locale"] = $locale; $data = array("cachekey" => "upgrade_step", "cachevalue" => serialize($upgradeStep), "dateline" => TIMESTAMP); Cache::model()->add($data, false, true); $upgradeRun = Cache::model()->fetchByPk("upgrade_run"); if (!$upgradeRun) { $upgrade = Ibos::app()->setting->get("setting/upgrade"); $data = array("cachekey" => "upgrade_run", "cachevalue" => serialize($upgrade), "dateline" => TIMESTAMP); Cache::model()->add($data, false, true); $upgradeRun = $upgrade; } else { $upgradeRun = unserialize($upgradeRun["cachevalue"]); } $param = array("op" => $operation, "version" => $version, "locale" => $locale, "charset" => $charset, "release" => $release); if ($step != 5) { $upgradeInfo = $this->filterRun($param, $upgradeRun); if (empty($upgradeInfo)) { Cache::model()->deleteByPk("upgrade_step"); Cache::model()->deleteByPk("upgrade_run"); $msg = Ibos::lang("upgrade_unknow_error", "", array("{url}" => $this->createUrl("upgrade/index", array("op" => "checking", "rechecking" => 1)))); $this->render("upgradeError", array("msg" => $msg)); exit; } $savePath = "/data/update/IBOS" . $upgradeInfo["latestversion"] . " Release[" . $upgradeInfo["latestrelease"] . "]"; $fileList = UpgradeUtil::fetchUpdateFileList($upgradeInfo); $updateMd5FileList = $fileList["md5"]; $updateFileList = $fileList["file"]; $preStatus = $this->preProcessingStep($upgradeInfo, $actionUrl = $this->createUrl("upgrade/index", $param), !empty($updateFileList) ? true : false); if ($preStatus["status"] < 0) { $this->ajaxReturn($preStatus, "json"); } } switch ($step) { case 1: return $this->processingShowUpgrade($updateFileList, $param, $savePath); break; case 2: return $this->processingDownloadFile($upgradeInfo, $updateMd5FileList, $updateFileList, $param); break; case 3: return $this->processingCompareFile($updateFileList, $param, $savePath); break; case 4: return $this->processingUpdateFile($upgradeInfo, $updateFileList, $upgradeStep, $param); break; case 5: return $this->processingTempFile($param); break; default: break; } break; default: break; } } else { $this->render("upgradeCheckVersion"); } }