- Модуль: extranet
- Путь к файлу: ~/bitrix/modules/extranet/classes/general/wizard_utils.php
- Класс: CExtranetWizardServices
- Вызов: CExtranetWizardServices::ReplaceMacrosRecursive
static function ReplaceMacrosRecursive($filePath, $arReplace)
{
clearstatcache();
if ((!is_dir($filePath) && !is_file($filePath)) || !is_array($arReplace))
return;
if ($handle = @opendir($filePath))
{
while (($file = readdir($handle)) !== false)
{
if ($file == "." || $file == "..") continue;
if (is_dir($filePath."/".$file))
{
CExtranetWizardServices::ReplaceMacrosRecursive($filePath.$file."/", $arReplace);
}
elseif (is_file($filePath."/".$file))
{
if (!is_writable($filePath."/".$file) || !is_array($arReplace))
return;
@chmod($filePath."/".$file, BX_FILE_PERMISSIONS);
$fullPath = $filePath . '/' . $file;
if (!file_exists($fullPath))
{
return;
}
$handleFile = fopen($fullPath, "rb");
$fileSize = filesize($fullPath);
$content = false;
if ($fileSize > 0)
{
$content = fread($handleFile, $fileSize);
}
@fclose($handleFile);
$handleFile = false;
if (!$handleFile = @fopen($filePath."/".$file, "wb"))
return;
if (flock($handleFile, LOCK_EX))
{
$arSearch = Array();
$arValue = Array();
foreach ($arReplace as $search => $replace)
{
if (isset($skipSharp) && $skipSharp)
$arSearch[] = $search;
else
$arSearch[] = "#".$search."#";
$arValue[] = $replace;
}
$content = str_replace($arSearch, $arValue, $content);
@fwrite($handleFile, $content);
@flock($handleFile, LOCK_UN);
}
@fclose($handleFile);
}
}
@closedir($handle);
}
}