- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/wizard_util.php
- Класс: ifCWizardUtil
- Вызов: CWizardUtil::ReplaceMacrosRecursive
static function ReplaceMacrosRecursive($filePath, $arReplace)
{
clearstatcache();
if ((!is_dir($filePath) && !is_file($filePath)) || !is_array($arReplace))
return;
$root = (defined("WIZARD_SITE_ROOT_PATH")? WIZARD_SITE_ROOT_PATH : $_SERVER["DOCUMENT_ROOT"]);
$root = trim($root, "/");
if ($handle = @opendir($filePath))
{
while (($file = readdir($handle)) !== false)
{
if ($file == "." || $file == ".." || (trim($filePath, "/") == $root && ($file == "bitrix" || $file == "upload")))
continue;
if (is_dir($filePath."/".$file))
{
self::ReplaceMacrosRecursive($filePath.$file."/", $arReplace);
}
elseif (is_file($filePath."/".$file))
{
if(GetFileExtension($file) <> "php")
continue;
if (!is_writable($filePath."/".$file))
continue;
$size = filesize($filePath."/".$file);
if($size == 0)
{
continue;
}
@chmod($filePath."/".$file, BX_FILE_PERMISSIONS);
if (!$handleFile = @fopen($filePath."/".$file, "rb"))
continue;
$content = @fread($handleFile, $size);
@fclose($handleFile);
if (!($handleFile = @fopen($filePath."/".$file, "wb")))
continue;
if (flock($handleFile, LOCK_EX))
{
$arSearch = array();
$arValue = array();
foreach ($arReplace as $search => $replace)
{
$arSearch[] = "#".$search."#";
$arValue[] = $replace;
}
$content = str_replace($arSearch, $arValue, $content);
@fwrite($handleFile, $content);
@flock($handleFile, LOCK_UN);
}
@fclose($handleFile);
}
}
@closedir($handle);
}
}