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