static function LoadModulesUpdates(&$errorMessage, &$arUpdateDescription, $lang = false, $stableVersionsOnly = "Y", $arRequestedModules = array(), $bStrongList = false)
{
$arUpdateDescription = array();
$updateServerQueryString = "";
$filename = $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/update_archive.gz";
$timeout = COption::GetOptionString("main", "update_load_timeout", "30");
if ($timeout < 5)
$timeout = 5;
CUpdateClientPartner::AddMessage2Log("exec CUpdateClientPartner::LoadModulesUpdates");
if (file_exists($filename.".log"))
{
$content = file_get_contents($filename.".log");
CUpdateClientPartner::__ParseServerData($content, $arUpdateDescription, $strError_tmp);
}
if (empty($arUpdateDescription) || $errorMessage <> '')
{
$arUpdateDescription = array();
if (file_exists($filename.".tmp"))
@unlink($filename.".tmp");
if (file_exists($filename.".log"))
@unlink($filename.".log");
if ($errorMessage <> '')
{
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU001");
return "E";
}
}
if (empty($arUpdateDescription))
{
$updateServerQueryString = CUpdateClientPartner::__CollectRequestData(
$errorMessage, $lang, $stableVersionsOnly, $arRequestedModules, array(), $bStrongList
);
if (empty($updateServerQueryString) || $errorMessage <> '')
{
if ($errorMessage == '')
$errorMessage = "[GNSU01] ".GetMessage("SUPZ_NO_QSTRING").". ";
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU002");
return "E";
}
CUpdateClientPartner::AddMessage2Log(
preg_replace("/LICENSE_KEY=[^&]*/i", "LICENSE_KEY=X", $updateServerQueryString)
);
$stime = microtime(true);
$content = CUpdateClientPartner::__GetHTTPPage("STEPM", $updateServerQueryString, $errorMessage);
if ($content == '')
{
if ($errorMessage == '')
$errorMessage = "[GNSU02] ".GetMessage("SUPZ_EMPTY_ANSWER").". ";
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU003");
return "E";
}
CUpdateClientPartner::AddMessage2Log(
"TIME LoadModulesUpdates(request) ".Round(microtime(true) - $stime, 3)." sec"
);
CUpdateClientPartner::__ParseServerData($content, $arUpdateDescription, $errorMessage);
if ($errorMessage <> '')
{
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU004");
return "E";
}
if (isset($arUpdateDescription["DATA"]["#"]["ERROR"]))
{
for ($i = 0, $cnt = count($arUpdateDescription["DATA"]["#"]["ERROR"]); $i < $cnt; $i++)
$errorMessage .= "[".$arUpdateDescription["DATA"]["#"]["ERROR"][$i]["@"]["TYPE"]."] ".$arUpdateDescription["DATA"]["#"]["ERROR"][$i]["#"];
}
if ($errorMessage <> '')
{
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU005");
return "E";
}
if (isset($arUpdateDescription["DATA"]["#"]["NOUPDATES"]))
{
CUpdateClientPartner::AddMessage2Log("Finish - NOUPDATES", "STEP");
return "F";
}
if (!($fp1 = fopen($filename.".log", "wb")))
{
$errorMessage = "[GNSU03] ".str_replace(
"#FILE#", $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates", GetMessage("SUPP_RV_ER_TEMP_FILE")
).". ";
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU006");
return "E";
}
fwrite($fp1, $content);
fclose($fp1);
CUpdateClientPartner::AddMessage2Log("STEP", "S");
return "S";
}
if (isset($arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["NAME"]))
{
if ($updateServerQueryString == "")
{
$updateServerQueryString = CUpdateClientPartner::__CollectRequestData(
$errorMessage, $lang, $stableVersionsOnly, $arRequestedModules, array(), $bStrongList
);
if (empty($updateServerQueryString) || $errorMessage <> '')
{
if ($errorMessage == '')
$errorMessage = "[GNSU01] ".GetMessage("SUPZ_NO_QSTRING").". ";
CUpdateClientPartner::AddMessage2Log($errorMessage, "LMU002");
return "E";
}
}
CUpdateClientPartner::AddMessage2Log("loadFileBx");
$r = static::loadFileBx(
$arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["NAME"],
$arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["SIZE"],
$filename,
$timeout,
$updateServerQueryString,
$errorMessage
);
}
elseif ($arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["URL"])
{
CUpdateClientPartner::AddMessage2Log("loadFile");
$r = static::loadFile(
$arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["URL"],
$arUpdateDescription["DATA"]["#"]["FILE"][0]["@"]["SIZE"],
$filename,
$timeout,
$errorMessage
);
}
else
{
$r = "E";
$errorMessage .= GetMessage("SUPP_PSD_BAD_RESPONSE");
}
if ($r == "E")
{
CUpdateClientPartner::AddMessage2Log($errorMessage, "GNSU001");
$errorMessage .= $errorMessage;
}
elseif ($r == "U")
{
@unlink($filename.".log");
}
CUpdateClientPartner::AddMessage2Log("RETURN", $r);
return $r;
}