示例#1
0
 /**
  * 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]["#"];
        }