• Модуль: search
  • Путь к файлу: ~/bitrix/modules/search/classes/general/search.php
  • Класс: CAllSearch
  • Вызов: CAllSearch::CheckPath
static function CheckPath($path)
{
	static $SEARCH_MASKS_CACHE = false;

	if (!is_array($SEARCH_MASKS_CACHE))
	{
		$arSearch = array("\", ".", "?", "*", "'");
		$arReplace = array("/", "\.", ".", ".*?", "\'");

		$arInc = array();
		$inc = str_replace(
			$arSearch,
			$arReplace,
			COption::GetOptionString("search", "include_mask")
		);
		$arIncTmp = explode(";", $inc);
		foreach ($arIncTmp as $mask)
		{
			$mask = trim($mask);
			if($mask <> '')
			{
				$arInc[] = "'^".$mask."$'";
			}
		}

		$arFullExc = array();
		$arExc = array();
		$exc = str_replace(
			$arSearch,
			$arReplace,
			COption::GetOptionString("search", "exclude_mask")
		);
		$arExcTmp = explode(";", $exc);
		foreach ($arExcTmp as $mask)
		{
			$mask = trim($mask);
			if($mask <> '')
			{
				if(preg_match("#^/[a-z0-9_.\\]+/#i", $mask))
				{
					$arFullExc[] = "'^".$mask."$'".BX_UTF_PCRE_MODIFIER;
				}
				else
				{
					$arExc[] = "'^".$mask."$'".BX_UTF_PCRE_MODIFIER;
				}
			}
		}

		$SEARCH_MASKS_CACHE = Array(
			"full_exc" => $arFullExc,
			"exc" => $arExc,
			"inc" => $arInc
		);
	}

	$file = end(explode('/', $path)); //basename
	if (strncmp($file, ".", 1) == 0)
		return 0;

	foreach ($SEARCH_MASKS_CACHE["full_exc"] as $mask)
		if (preg_match($mask, $path))
			return false;

	foreach ($SEARCH_MASKS_CACHE["exc"] as $mask)
		if (preg_match($mask, $path))
			return 0;

	foreach ($SEARCH_MASKS_CACHE["inc"] as $mask)
		if (preg_match($mask, $path))
			return true;

	return 0;
}