/** * Check update files. * * @param string $updateDir */ protected function validateUpdate($updateDir) { $errorMessage = null; if (!\CUpdateClientPartner::CheckUpdatability($updateDir, $errorMessage)) { throw new Exception\ModuleUpdateException('[CL03] CheckUpdatability failed. ' . $errorMessage, $this->getName()); } if (isset($updateDescription["DATA"]["#"]["ERROR"])) { $errorMessage = ""; foreach ($updateDescription["DATA"]["#"]["ERROR"] as $errorDescription) { $errorMessage .= "[" . $errorDescription["@"]["TYPE"] . "] " . $errorDescription["#"]; } throw new Exception\ModuleUpdateException($errorMessage, $this->getName()); } }
public static function CheckUpdatability($updatesDir, &$strError) { $strError_tmp = ""; $updatesDirFull = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/updates/" . $updatesDir; if (!file_exists($updatesDirFull) || !is_dir($updatesDirFull)) { $strError_tmp .= "[UCU01] " . str_replace("#FILE#", $updatesDirFull, GetMessage("SUPP_CU_NO_TMP_CAT")) . ". "; } if (strlen($strError_tmp) <= 0) { if (!is_readable($updatesDirFull)) { $strError_tmp .= "[UCU02] " . str_replace("#FILE#", $updatesDirFull, GetMessage("SUPP_CU_RD_TMP_CAT")) . ". "; } } if ($handle = @opendir($updatesDirFull)) { while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") { continue; } if (is_dir($updatesDirFull . "/" . $file)) { CUpdateClientPartner::CheckUpdatability($updatesDir . "/" . $file, $strError_tmp); } elseif (is_file($updatesDirFull . "/" . $file)) { $strRealPath = $_SERVER["DOCUMENT_ROOT"] . US_SHARED_KERNEL_PATH . "/modules/" . substr($updatesDir . "/" . $file, strpos($updatesDir . "/" . $file, "/")); if (file_exists($strRealPath)) { if (!is_writeable($strRealPath)) { $strError_tmp .= "[UCU03] " . str_replace("#FILE#", $strRealPath, GetMessage("SUPP_CU_MAIN_ERR_FILE")) . ". "; } } else { $p = CUpdateClientPartner::__bxstrrpos($strRealPath, "/"); $strRealPath = substr($strRealPath, 0, $p); if (strlen($strRealPath) > 1) { $strRealPath = rtrim($strRealPath, "/"); } $p = CUpdateClientPartner::__bxstrrpos($strRealPath, "/"); while ($p > 0) { if (file_exists($strRealPath) && is_dir($strRealPath)) { if (!is_writable($strRealPath)) { $strError_tmp .= "[UCU04] " . str_replace("#FILE#", $strRealPath, GetMessage("SUPP_CU_MAIN_ERR_CAT")) . ". "; } break; } $strRealPath = substr($strRealPath, 0, $p); $p = CUpdateClientPartner::__bxstrrpos($strRealPath, "/"); } } } } @closedir($handle); } if (strlen($strError_tmp) > 0) { CUpdateClientPartner::AddMessage2Log($strError_tmp, "CUCU"); $strError .= $strError_tmp; return False; } else { return True; } }
die("FIN"); } /*if (!CUpdateClientPartner::GetNextStepUpdates($errorMessage, LANG, $stableVersionsOnly, $arRequestedModules, array_key_exists("reqm", $_REQUEST))) { $errorMessage .= "[CL01] ".GetMessage("SUPC_ME_LOAD").". "; CUpdateClientPartner::AddMessage2Log(GetMessage("SUPC_ME_LOAD"), "CL01"); }*/ if (StrLen($errorMessage) <= 0) { $temporaryUpdatesDir = ""; if (!CUpdateClientPartner::UnGzipArchive($temporaryUpdatesDir, $errorMessage, true)) { $errorMessage .= "[CL02] " . GetMessage("SUPC_ME_PACK") . ". "; CUpdateClientPartner::AddMessage2Log(GetMessage("SUPC_ME_PACK"), "CL02"); } } if (strlen($errorMessage) <= 0) { if (!CUpdateClientPartner::CheckUpdatability($temporaryUpdatesDir, $errorMessage)) { $errorMessage .= "[CL03] " . GetMessage("SUPC_ME_CHECK") . ". "; CUpdateClientPartner::AddMessage2Log(GetMessage("SUPC_ME_CHECK"), "CL03"); } } $arStepUpdateInfo = $arUpdateDescription; /*if (strlen($errorMessage) <= 0) { $arStepUpdateInfo = CUpdateClientPartner::GetStepUpdateInfo($temporaryUpdatesDir, $errorMessage); //CUpdateClientPartner::AddMessage2Log(print_r($arStepUpdateInfo, true), "!!!!!"); }*/ if (StrLen($errorMessage) <= 0) { if (isset($arStepUpdateInfo["DATA"]["#"]["ERROR"])) { for ($i = 0, $cnt = count($arStepUpdateInfo["DATA"]["#"]["ERROR"]); $i < $cnt; $i++) { $errorMessage .= "[" . $arStepUpdateInfo["DATA"]["#"]["ERROR"][$i]["@"]["TYPE"] . "] " . $arStepUpdateInfo["DATA"]["#"]["ERROR"][$i]["#"]; }