• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/rest/entity/base.php
  • Класс: BitrixSaleRestEntityBase
  • Вызов: Base::internalizeFilterFields
protected function internalizeFilterFields($fields, array $fieldsInfo)
{
	$result = [];

	$fieldsInfo = empty($fieldsInfo)? $this->getFields():$fieldsInfo;

	if(is_array($fields) && count($fields)>0)
	{
		$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->internalizeFieldValue($value, $info);
			if($r->isSuccess())
			{
				$value = current($r->getData());
			}
			else
			{
				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;
			}

			$result[$rawName]=$value;
		}
	}
	return $result;
}