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

	$destFolder = str_replace("\", "/", $destFolder);
	$destFolder = Trim($destFolder, " tnrx0B/\");
	if ($destFolder <> '')
		$destFolder = "/".$destFolder;

	if ($srcFolder && $srcFolder <> '')
	{
		$srcFolder = str_replace("\", "/", $srcFolder);
		$srcFolder = Trim($srcFolder, " tnrx0B/\");
		if ($srcFolder <> '')
			$srcFolder = "/".$srcFolder;

		$srcFolderFull = $_SERVER["DOCUMENT_ROOT"].$srcFolder;
		if (!file_exists($srcFolderFull) || !is_dir($srcFolderFull))
			$strError_tmp .= "[UCFU01] ".str_replace("#FILE#", $srcFolderFull, GetMessage("SUPN_NO_FOLDER_EX")).".
"; if ($strError_tmp == '') { if (!is_readable($srcFolderFull)) $strError_tmp .= "[UCFU02] ".str_replace("#FILE#", $srcFolderFull, GetMessage("SUPN_CU_RD_TMP_CAT")).".
"; } if ($handle = @opendir($srcFolderFull)) { while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") continue; if (is_dir($srcFolderFull."/".$file)) { CUpdateSystem::CheckFolderUpdatability($destFolder."/".$file, $srcFolder."/".$file, $strError_tmp); } elseif (is_file($srcFolderFull."/".$file)) { $destFileFull = $_SERVER["DOCUMENT_ROOT"].$destFolder."/".$file; if (file_exists($destFileFull)) { if (!is_writeable($destFileFull)) $strError_tmp .= "[UCFU03] ".str_replace("#FILE#", $destFileFull, GetMessage("SUPP_CU_MAIN_ERR_FILE")).".
"; } else { $p = CUpdateSystem::bxstrrpos($destFileFull, "/"); $destFileFull = substr($destFileFull, 0, $p); while (strlen($destFileFull) > 1 && substr($destFileFull, strlen($destFileFull) - 1, 1) == "/") $destFileFull = substr($destFileFull, 0, strlen($destFileFull) - 1); $p = CUpdateSystem::bxstrrpos($destFileFull, "/"); while ($p > 0) { if (file_exists($destFileFull) && is_dir($destFileFull)) { if (!is_writable($destFileFull)) $strError_tmp .= "[UCFU04] ".str_replace("#FILE#", $destFileFull, GetMessage("SUPP_CU_MAIN_ERR_CAT")).".
"; break; } $destFileFull = substr($destFileFull, 0, $p); $p = CUpdateSystem::bxstrrpos($destFileFull, "/"); } } } } @closedir($handle); } } else { $destFolderFull = $_SERVER["DOCUMENT_ROOT"].$destFolder; if (!file_exists($destFolderFull) || !is_dir($destFolderFull)) $strError_tmp .= "[UCFU05] ".str_replace("#FILE#", $destFolderFull, GetMessage("SUPN_NO_FOLDER_EX")).".
"; if ($strError_tmp == '') { if (!is_writeable($destFolderFull)) $strError_tmp .= "[UCFU06] ".str_replace("#FILE#", $destFolderFull, GetMessage("SUPP_CU_MAIN_ERR_CAT")).".
"; } if ($handle = @opendir($destFolderFull)) { while (($file = readdir($handle)) !== false) { if ($file == "." || $file == "..") continue; if (is_dir($destFolderFull."/".$file)) { CUpdateSystem::CheckFolderUpdatability($destFolder."/".$file, "", $strError_tmp); } elseif (is_file($destFolderFull."/".$file)) { if (!is_writeable($destFolderFull."/".$file)) $strError_tmp .= "[UCFU07] ".str_replace("#FILE#", $destFolderFull."/".$file, GetMessage("SUPP_CU_MAIN_ERR_FILE")).".
"; } } @closedir($handle); } } if ($strError_tmp <> '') { CUpdateSystem::AddMessage2Log($strError_tmp, "CUCFU"); $strError .= $strError_tmp; return false; } else return true; }