• Модуль: search
  • Путь к файлу: ~/bitrix/modules/search/classes/general/title.php
  • Класс: CAllSearchTitle
  • Вызов: CAllSearchTitle::Fetch
function Fetch()
{
	static $arSite = array();

	$r = parent::Fetch();

	if ($r)
	{
		$site_id = $r["SITE_ID"];
		if (!isset($arSite[$site_id]))
		{
			$rsSite = CSite::GetList('', '', array("ID" => $site_id));
			$arSite[$site_id] = $rsSite->Fetch();
		}
		$r["DIR"] = $arSite[$site_id]["DIR"];
		$r["SERVER_NAME"] = $arSite[$site_id]["SERVER_NAME"];

		if ($r["SITE_URL"] <> '')
			$r["URL"] = $r["SITE_URL"];

		if (mb_substr($r["URL"], 0, 1) == "=")
		{
			foreach (GetModuleEvents("search", "OnSearchGetURL", true) as $arEvent)
			{
				$newUrl = ExecuteModuleEventEx($arEvent, array($r));
				if (isset($newUrl))
				{
					$r["URL"] = $newUrl;
				}
			}
		}

		$r["URL"] = str_replace(
			array("#LANG#", "#SITE_DIR#", "#SERVER_NAME#"),
			array($r["DIR"], $r["DIR"], $r["SERVER_NAME"]),
			$r["URL"]
		);
		$r["URL"] = preg_replace("'(?_arStemFunc["pcre_letters"]."])(".str_replace("/", "\/", implode("|", array_map('preg_quote', array_keys($this->_arPhrase)))).")/i".BX_UTF_PCRE_MODIFIER;
		if (preg_match_all($preg_template, ToUpper($r["NAME"]), $arMatches, PREG_OFFSET_CAPTURE))
		{
			$c = count($arMatches[2]);
			if (defined("BX_UTF"))
			{
				for ($j = $c - 1; $j >= 0; $j--)
				{
					$prefix = mb_substr($r["NAME"], 0, $arMatches[2][$j][1], 'latin1');
					$instr = mb_substr($r["NAME"], $arMatches[2][$j][1], mb_strlen($arMatches[2][$j][0], 'latin1'), 'latin1');
					$suffix = mb_substr($r["NAME"], $arMatches[2][$j][1] + mb_strlen($arMatches[2][$j][0], 'latin1'), mb_strlen($r["NAME"], 'latin1'), 'latin1');
					$r["NAME"] = $prefix."".$instr."".$suffix;
				}
			}
			else
			{
				for ($j = $c - 1; $j >= 0; $j--)
				{
					$prefix = mb_substr($r["NAME"], 0, $arMatches[2][$j][1]);
					$instr = mb_substr($r["NAME"], $arMatches[2][$j][1], mb_strlen($arMatches[2][$j][0]));
					$suffix = mb_substr($r["NAME"], $arMatches[2][$j][1] + mb_strlen($arMatches[2][$j][0]));
					$r["NAME"] = $prefix."".$instr."".$suffix;
				}
			}
		}
	}

	return $r;
}