• Модуль: 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);

	}
}