- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/update_class.php
- Класс: CUpdateSystem
- Вызов: CUpdateSystem::GetAvailableUpdateTypes
static function GetAvailableUpdateTypes(&$strError, $lang = false, $stableVersionsOnly = "Y")
{
$arResult = array();
$strError_tmp = "";
CUpdateSystem::AddMessage2Log("exec CUpdateSystem::GetAvailableUpdateTypes");
if ($lang===false)
$lang = LANGUAGE_ID;
$stableVersionsOnly = (($stableVersionsOnly == "N") ? "N" : "Y");
CUpdateSystem::CheckDirPath($_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/", true);
$arClientModules = CUpdateSystem::GetModules($strError_tmp);
$arClientLanguages = CUpdateSystem::GetLanguages($strError_tmp);
$arClientHelps = CUpdateSystem::GetHelps($strError_tmp);
if ($strError_tmp == '')
{
$GLOBALS["DB"]->GetVersion();
$strVars = "LICENSE_KEY=".urlencode(md5(CUpdateSystem::GetLicenseKey())).
"&lang=".urlencode($lang).
"&UTYPES=".urlencode("MLH").
"&SUPD_VER=".urlencode(UPDATE_SYSTEM_VERSION).
"&ALL_MODULES=".urlencode("Y").
"&TYPENC=".((defined("DEMO") && DEMO=="Y") ? "D" : ((defined("ENCODE") && ENCODE=="Y") ? "E" : "F" )).
"&COUNT_ONLY=".urlencode("Y").
"&SUPD_STS=".urlencode(CUpdateSystem::GetFooPath("GetList")).
"&SUPD_DBS=".urlencode($GLOBALS["DB"]->type).
"&XE=".urlencode((isset($GLOBALS["DB"]->XE) && $GLOBALS["DB"]->XE) ? "Y" : "N").
"&CLIENT_SITE=".urlencode($_SERVER["SERVER_NAME"]).
"&CANGZIP=".urlencode((CUpdateSystem::IsGzipInstalled()) ? "Y" : "N").
"&CLIENT_PHPVER=".urlencode(phpversion()).
"&stable=".urlencode($stableVersionsOnly).
"&".CUpdateSystem::ModulesArray2Query($arClientModules, "bitm_").
"&".CUpdateSystem::ModulesArray2Query($arClientLanguages, "bitl_").
"&".CUpdateSystem::ModulesArray2Query($arClientHelps, "bith_");
CUpdateSystem::AddMessage2Log(preg_replace("/LICENSE_KEY=[^&]*/i", "LICENSE_KEY=X", $strVars));
$stime = CUpdateSystem::getmicrotime();
$content = CUpdateSystem::getHTTPPage("bit_sysserver.php", $strVars, $strError_tmp);
CUpdateSystem::AddMessage2Log("TIME GetAvailableUpdateTypes.getHTTPPage ".Round(CUpdateSystem::getmicrotime()-$stime, 3)." sec");
}
if ($strError_tmp == '')
{
$arRes = Array();
CUpdateSystem::ParseServerData($content, $arRes, $strError_tmp);
}
if ($strError_tmp == '')
{
if (isset($arRes["DATA"]["#"]["UPDATE_SYSTEM"])
&& is_array($arRes["DATA"]["#"]["UPDATE_SYSTEM"])
&& !empty($arRes["DATA"]["#"]["UPDATE_SYSTEM"]))
{
$arResult["UPDATE_SYSTEM"] = $arRes["DATA"]["#"]["UPDATE_SYSTEM"][0];
}
if (isset($arRes["DATA"]["#"]["MODULES"])
&& is_array($arRes["DATA"]["#"]["MODULES"])
&& !empty($arRes["DATA"]["#"]["MODULES"]))
{
$arResult["MODULES"] = $arRes["DATA"]["#"]["MODULES"][0];
}
if (isset($arRes["DATA"]["#"]["LANGS"])
&& is_array($arRes["DATA"]["#"]["LANGS"])
&& !empty($arRes["DATA"]["#"]["LANGS"]))
{
$arResult["LANGS"] = $arRes["DATA"]["#"]["LANGS"][0];
}
if (isset($arRes["DATA"]["#"]["HELPS"])
&& is_array($arRes["DATA"]["#"]["HELPS"])
&& !empty($arRes["DATA"]["#"]["HELPS"]))
{
$arResult["HELPS"] = $arRes["DATA"]["#"]["HELPS"][0];
}
if (isset($arRes["DATA"]["#"]["ERROR"])
&& is_array($arRes["DATA"]["#"]["ERROR"])
&& !empty($arRes["DATA"]["#"]["ERROR"]))
{
$arResult["ERROR"] = $arRes["DATA"]["#"]["ERROR"];
}
if (isset($arRes["DATA"]["#"]["CLIENT"])
&& is_array($arRes["DATA"]["#"]["CLIENT"])
&& !empty($arRes["DATA"]["#"]["CLIENT"]))
{
$arResult["CLIENT"] = $arRes["DATA"]["#"]["CLIENT"][0];
}
if (isset($arRes["DATA"]["#"]["SYSTEM"])
&& is_array($arRes["DATA"]["#"]["SYSTEM"])
&& !empty($arRes["DATA"]["#"]["SYSTEM"]))
{
$arResult["SYSTEM"] = $arRes["DATA"]["#"]["SYSTEM"][0];
}
}
if ($strError_tmp == '')
{
if ((!isset($arResult["CLIENT"]) || !is_array($arResult["CLIENT"]))
&& (!isset($arResult["ERROR"]) || !is_array($arResult["ERROR"])))
{
$strError_tmp .= "[UGAUT01] ".GetMessage("SUPP_GAUT_SYSERR").".
";
}
}
if ($strError_tmp <> '')
{
CUpdateSystem::AddMessage2Log($strError_tmp, "CUGAUT");
$strError .= $strError_tmp;
return false;
}
else
return $arResult;
}