• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_class.php
  • Класс: CUpdateSystem
  • Вызов: CUpdateSystem::UpdateUpdate
static function UpdateUpdate(&$strError, $lang = false, $stableVersionsOnly = "Y")
{
	$strError_tmp = "";

	CUpdateSystem::AddMessage2Log("exec CUpdateSystem::UpdateUpdate");

	if ($lang===false)
		$lang = LANGUAGE_ID;

	$stableVersionsOnly = (($stableVersionsOnly == "N") ? "N" : "Y");

	$GLOBALS["DB"]->GetVersion();

	$strVars = "LICENSE_KEY=".urlencode(md5(CUpdateSystem::GetLicenseKey())).
		"&CLIENT_SITE=".urlencode($_SERVER["SERVER_NAME"]).
		"&CANGZIP=".urlencode((CUpdateSystem::IsGzipInstalled()) ? "Y" : "N").
		"&UTYPES=".urlencode("U").
		"&SUPD_STS=".urlencode(CUpdateSystem::GetFooPath("GetList")).
		"&COUNT_ONLY=".urlencode("F").
		"&SUPD_VER=".urlencode(UPDATE_SYSTEM_VERSION).
		"&SUPD_DBS=".urlencode($GLOBALS["DB"]->type).
		"&XE=".urlencode((isset($GLOBALS["DB"]->XE) && $GLOBALS["DB"]->XE) ? "Y" : "N").
		"&CLIENT_PHPVER=".urlencode(phpversion()).
		"&stable=".urlencode($stableVersionsOnly).
		"&lang=".urlencode($lang);

	CUpdateSystem::AddMessage2Log(preg_replace("/LICENSE_KEY=[^&]*/i", "LICENSE_KEY=X", $strVars));

	$fcontent = CUpdateSystem::getHTTPPage("bit_sysserver.php", $strVars, $strError_tmp);

	if ($fcontent == '')
		$strError_tmp .= "[UUU01] ".GetMessage("SUPP_AS_EMPTY_RESP").".
"; if ($strError_tmp == '') { if (!($fp1 = fopen($_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/update_archive.gz", "wb"))) $strError_tmp .= "[UUU02] ".str_replace("#FILE#", $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates", GetMessage("SUPP_RV_ER_TEMP_FILE")).".
"; } if ($strError_tmp == '') { if (!fwrite($fp1, $fcontent)) $strError_tmp .= "[UUU03] ".str_replace("#FILE#", $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/update_archive.gz", GetMessage("SUPP_RV_WRT_TEMP_FILE")).".
"; @fclose($fp1); } if ($strError_tmp == '') { $temporary_updates_dir = ""; if (!CUpdateSystem::UnGzipArchive($temporary_updates_dir, $strError_tmp, "Y")) $strError_tmp .= "[UUU04] ".GetMessage("SUPP_UU_BREAK").".
"; } if ($strError_tmp == '') { $updates_dir_full = $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/".$temporary_updates_dir; if (!file_exists($updates_dir_full."/update_info.xml") || !is_file($updates_dir_full."/update_info.xml")) $strError_tmp .= "[UUU05] ".str_replace("#FILE#", $updates_dir_full."/update_info.xml", GetMessage("SUPP_RV_ER_DESCR_FILE")).".
"; } if ($strError_tmp == '') { if (!is_readable($updates_dir_full."/update_info.xml")) $strError_tmp .= "[URV06] ".str_replace("#FILE#", $updates_dir_full."/update_info.xml", GetMessage("SUPP_RV_READ_DESCR_FILE")).".
"; } if ($strError_tmp == '') { $content = file_get_contents($updates_dir_full."/update_info.xml"); } if ($strError_tmp == '') { $arRes = Array(); CUpdateSystem::ParseServerData($content, $arRes, $strError_tmp); } if ($strError_tmp == '') { if (isset($arRes["DATA"]["#"]["ERROR"]) && is_array($arRes["DATA"]["#"]["ERROR"]) && !empty($arRes["DATA"]["#"]["ERROR"])) { for ($i = 0, $n = count($arRes["DATA"]["#"]["ERROR"]); $i < $n; $i++) { if ($arRes["DATA"]["#"]["ERROR"][$i]["@"]["TYPE"] <> '') $strError_tmp .= "[".$arRes["DATA"]["#"]["ERROR"][$i]["@"]["TYPE"]."] "; $strError_tmp .= $arRes["DATA"]["#"]["ERROR"][$i]["#"].".
"; } } } if ($strError_tmp == '') { $aFiles = array( //"UUU071"=>"update_update.php", "UUU072"=>"update_class.php", "UUU073"=>"update_list.php", //"UUU074"=>"update_update5.php", "UUU075"=>"update_log.php", ); foreach($aFiles as $err=>$file) if(!file_exists($updates_dir_full."/main/classes/general/".$file) || !is_file($updates_dir_full."/main/classes/general/".$file)) $strError_tmp .= "[".$err."] ".str_replace("#FILE#", $file, GetMessage("SUPP_UU_NO_UFILE")).".
"; } if ($strError_tmp == '') { if (!CUpdateSystem::CheckUpdatability($temporary_updates_dir, $strError_tmp)) { $strError_tmp .= "[UUU08] ".GetMessage("SUPP_UU_LOAD_BREAK").".
"; } } if ($strError_tmp == '') { $new_updatesys_version = ""; if (isset($arRes["DATA"]["#"]["UPDATE_SYSTEM"]) && is_array($arRes["DATA"]["#"]["UPDATE_SYSTEM"]) && !empty($arRes["DATA"]["#"]["UPDATE_SYSTEM"]) && isset($arRes["DATA"]["#"]["UPDATE_SYSTEM"][0]["@"]["VERSION"])) { $new_updatesys_version = trim($arRes["DATA"]["#"]["UPDATE_SYSTEM"][0]["@"]["VERSION"]); } if ($new_updatesys_version == '') $strError_tmp .= "[UUU080] ".GetMessage("SUPP_UU_NO_NEW_VER").".
"; } if ($strError_tmp == '') { CUpdateSystem::CopyDirFiles($updates_dir_full."/main", $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main", $strError_tmp); } if ($strError_tmp == '') { CUpdateSystem::AddMessage2Log("Update updated successfully!", "CUUU"); CUpdateSystem::DeleteDirFilesEx($updates_dir_full); } if ($strError_tmp <> '') { CUpdateSystem::AddMessage2Log($strError_tmp, "CUUU"); $strError .= $strError_tmp; return false; } else return true; }