function CheckFolderUpdatability($destFolder, $srcFolder, &$strError) { $strError_tmp = ""; $destFolder = str_replace("\\", "/", $destFolder); $destFolder = Trim($destFolder, " \t\n\r\0\x0B/\\"); if (strlen($destFolder) > 0) $destFolder = "/".$destFolder; if ($srcFolder && strlen($srcFolder) > 0) { $srcFolder = str_replace("\\", "/", $srcFolder); $srcFolder = Trim($srcFolder, " \t\n\r\0\x0B/\\"); if (strlen($srcFolder) > 0) $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")).".<br>"; if (strlen($strError_tmp) <= 0) { if (!is_readable($srcFolderFull)) $strError_tmp .= "[UCFU02] ".str_replace("#FILE#", $srcFolderFull, GetMessage("SUPN_CU_RD_TMP_CAT")).".<br>"; } 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")).".<br>"; } 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")).".<br>"; 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")).".<br>"; if (strlen($strError_tmp) <= 0) { if (!is_writeable($destFolderFull)) $strError_tmp .= "[UCFU06] ".str_replace("#FILE#", $destFolderFull, GetMessage("SUPP_CU_MAIN_ERR_CAT")).".<br>"; } 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")).".<br>"; } } @closedir($handle); } } if (strlen($strError_tmp) > 0) { CUpdateSystem::AddMessage2Log($strError_tmp, "CUCFU"); $strError .= $strError_tmp; return False; } else return True; }