• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_client_partner.php
  • Класс: CUpdateClientPartner
  • Вызов: CUpdateClientPartner::CheckUpdatability
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 ($strError_tmp == '')
		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/".mb_substr($updatesDir."/".$file, mb_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 = mb_substr($strRealPath, 0, $p);

					if (mb_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 = mb_substr($strRealPath, 0, $p);
						$p = CUpdateClientPartner::__bxstrrpos($strRealPath, "/");
					}
				}
			}
		}
		@closedir($handle);
	}

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