- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/integration/view/base.php
- Класс: BitrixRestIntegrationViewBase
- Вызов: Base::internalizeFilterFields
protected function internalizeFilterFields($fields, array $fieldsInfo): array
{
$result = [];
$fieldsInfo = empty($fieldsInfo)? $this->getFields():$fieldsInfo;
if (is_array($fields) && !empty($fields))
{
$listFieldsInfo = $this->getListFieldInfo($fieldsInfo, ['filter'=>['ignoredAttributes'=>[Attributes::HIDDEN]]]);
foreach ($fields as $rawName=>$value)
{
$field = CSqlUtil::GetFilterOperation($rawName);
$info = isset($listFieldsInfo[$field['FIELD']]) ? $listFieldsInfo[$field['FIELD']]:null;
if (!$info)
{
continue;
}
$r = $this->internalizeValue($value, $info);
if ($r->isSuccess() === false)
{
continue;
}
$operation = mb_substr($rawName, 0, mb_strlen($rawName) - mb_strlen($field['FIELD']));
if (isset($info['FORBIDDEN_FILTERS'])
&& is_array($info['FORBIDDEN_FILTERS'])
&& in_array($operation, $info['FORBIDDEN_FILTERS'], true))
{
continue;
}
$rawName = $operation.$this->canonicalizeField($field['FIELD'], $info);
$result[$rawName] = $r->getData()[0];
}
}
return $result;
}