- Модуль: security
- Путь к файлу: ~/bitrix/modules/security/classes/general/filter_mask.php
- Класс: CSecurityFilterMask
- Вызов: CSecurityFilterMask::Check
static function Check($siteId, $uri)
{
global $DB, $CACHE_MANAGER;
$bFound = false;
if(CACHED_b_sec_filter_mask !== false && is_object($CACHE_MANAGER))
{
$cache_id = "b_sec_filter_mask";
if($CACHE_MANAGER->Read(CACHED_b_sec_filter_mask, $cache_id, "b_sec_filter_mask"))
{
$arMasks = $CACHE_MANAGER->Get($cache_id);
}
else
{
$arMasks = array();
$rs = $DB->Query("SELECT * FROM b_sec_filter_mask ORDER BY SORT");
while($ar = $rs->Fetch())
{
$site_id = $ar["SITE_ID"]? $ar["SITE_ID"]: "-";
$arMasks[$site_id][$ar["SORT"]] = $ar["PREG_MASK"];
}
$CACHE_MANAGER->Set($cache_id, $arMasks);
}
if(isset($arMasks["-"]) && is_array($arMasks["-"]))
{
foreach($arMasks["-"] as $mask)
{
if(preg_match("#^".$mask."$#", $uri))
{
$bFound = true;
break;
}
}
}
if (
!$bFound
&& $siteId
&& isset($arMasks[$siteId])
)
{
foreach($arMasks[$siteId] as $mask)
{
if(preg_match("#^".$mask."$#", $uri))
{
$bFound = true;
break;
}
}
}
}
else
{
$sql = "
SELECT m.*
FROM
b_sec_filter_mask m
WHERE
(m.SITE_ID IS NULL AND '".$DB->ForSQL($uri)."' like m.LIKE_MASK)
";
if ($siteId)
{
$sql .= "
OR (m.SITE_ID = '".$DB->ForSQL($siteId)."' AND '".$DB->ForSQL($uri)."' like m.LIKE_MASK)
";
}
$rs = $DB->Query($sql);
if($rs->Fetch())
$bFound = true;
}
return $bFound;
}