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

	CUpdateClientPartner::AddMessage2Log("exec CUpdateClientPartner::RegisterModules");

	$strQuery = CUpdateClientPartner::__CollectRequestData(
		$strError_tmp,
		$lang,
		$stableVersionsOnly,
		array(),
		array()
	);
	if ($strQuery === false || $strQuery == '' || $strError_tmp <> '')
	{
		$strError .= $strError_tmp;
		CUpdateClientPartner::AddMessage2Log("Empty query list", "GUL01");
		return false;
	}

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

	$stime = microtime(true);
	$content = CUpdateClientPartner::__GetHTTPPage("REG", $strQuery, $strError_tmp);

	if ($content == '')
	{
		if ($strError_tmp == '')
			$strError_tmp = "[GNSU02] ".GetMessage("SUPZ_EMPTY_ANSWER").". ";
	}

	CUpdateClientPartner::AddMessage2Log("TIME RegisterModules(request) ".Round(microtime(true) - $stime, 3)." sec");

	if ($strError_tmp == '')
	{
		if (!($fp1 = fopen($_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/update_archive.gz", "wb")))
			$strError_tmp .= "[URV02] ".str_replace("#FILE#", $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates", GetMessage("SUPP_RV_ER_TEMP_FILE")).". ";
	}

	if ($strError_tmp == '')
	{
		if (!fwrite($fp1, $content))
			$strError_tmp .= "[URV03] ".str_replace("#FILE#", $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/update_archive.gz", GetMessage("SUPP_RV_WRT_TEMP_FILE")).". ";

		@fclose($fp1);
	}

	if ($strError_tmp == '')
	{
		$updatesDirTmp = "";
		if (!CUpdateClientPartner::UnGzipArchive($updatesDirTmp, $strError_tmp, true))
			$strError_tmp .= "[URV04] ".GetMessage("SUPP_RV_BREAK").". ";
	}

	if ($strError_tmp == '')
	{
		$updatesDirFull = $_SERVER["DOCUMENT_ROOT"]."/bitrix/updates/".$updatesDirTmp;
		if (!file_exists($updatesDirFull."/update_info.xml") || !is_file($updatesDirFull."/update_info.xml"))
			$strError_tmp .= "[URV05] ".str_replace("#FILE#", $updatesDirFull."/update_info.xml", GetMessage("SUPP_RV_ER_DESCR_FILE")).". ";
	}

	if ($strError_tmp == '')
	{
		if (!is_readable($updatesDirFull."/update_info.xml"))
			$strError_tmp .= "[URV06] ".str_replace("#FILE#", $updatesDirFull."/update_info.xml", GetMessage("SUPP_RV_READ_DESCR_FILE")).". ";
	}

	if ($strError_tmp == '')
		$content = file_get_contents($updatesDirFull."/update_info.xml");

	//echo "!1!".htmlspecialcharsbx($content)."!2!";

	if ($strError_tmp == '')
	{
		$arRes = Array();
		CUpdateClientPartner::__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 == '')
	{
		$handle = @opendir($updatesDirFull);
		if ($handle)
		{
			while (false !== ($dir = readdir($handle)))
			{
				if ($dir == "." || $dir == "..")
					continue;

				if (file_exists($_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/".$dir))
				{
					$strError_tmp1 = "";
					CUpdateClientPartner::__CopyDirFiles($updatesDirFull."/".$dir, $_SERVER["DOCUMENT_ROOT"].US_SHARED_KERNEL_PATH."/modules/".$dir, $strError_tmp1, false);
					if ($strError_tmp1 <> '')
						$strError_tmp .= $strError_tmp1;
				}
			}
			closedir($handle);
		}
	}

	if ($strError_tmp == '')
	{
		CUpdateClientPartner::AddMessage2Log("Modules registered successfully!", "CURV");
		CUpdateClientPartner::__DeleteDirFilesEx($updatesDirFull);
	}

	if ($strError_tmp <> '')
	{
		CUpdateClientPartner::AddMessage2Log($strError_tmp, "CURV");
		$strError .= $strError_tmp;
		return false;
	}
	else
		return true;
}