- Модуль: 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, " tnr x0B/\");
if ($destFolder <> '')
$destFolder = "/".$destFolder;
if ($srcFolder && $srcFolder <> '')
{
$srcFolder = str_replace("\", "/", $srcFolder);
$srcFolder = Trim($srcFolder, " tnr x0B/\");
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;
}