- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/classes/general/restentity.php
- Класс: CBitrixRestEntity
- Вызов: CBitrixRestEntity::checkFilter
static function checkFilter($arFilter, $bChangeLogic = true)
{
if(is_array($arFilter))
{
$arFilter = array_change_key_case($arFilter, CASE_UPPER);
foreach ($arFilter as $key => $value)
{
if(is_numeric($key) && is_array($value))
{
$arFilter[$key] = self::checkFilter($value, false);
}
elseif(preg_match('/^([^a-zA-Z]*)(.*)/', $key, $matches))
{
$operation = $matches[1];
$field = $matches[2];
if(!in_array($operation, self::$arAllowedOperations))
{
unset($arFilter[$key]);
}
else
{
switch($field)
{
case 'DATE_ACTIVE_FROM':
case 'DATE_ACTIVE_TO':
case 'TIMESTAMP_X':
case 'DATE_CREATE':
$arFilter[$key] = CRestUtil::unConvertDateTime($value, true);
break;
case 'SECTION':
$arFilter[$operation.'IBLOCK_SECTION_ID'] = $value;
unset($arFilter[$key]);
break;
case 'IBLOCK_ID':
case 'CHECK_PERMISSIONS':
unset($arFilter[$key]);
break;
case 'LOGIC':
if($bChangeLogic)
unset($arFilter[$key]);
break;
default:
break;
}
}
}
else
{
unset($arFilter[$key]);
}
}
}
return $arFilter;
}