• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/component/selector/entity.php
  • Класс: BitrixIblockComponentSelectorEntity
  • Вызов: Entity::addFilterListValue
private function addFilterListValue(array &$result, array $filter, $fieldId, array $field)
{
	$multiple = isset($field['params']['multiple']) && $field['params']['multiple'] == 'Y';
	if (isset($filter[$fieldId]))
	{
		if ($multiple)
			$validRawValue = !empty($filter[$fieldId]) && is_array($filter[$fieldId]);
		else
			$validRawValue = is_string($filter[$fieldId]) || is_int($filter[$fieldId]);
		if ($validRawValue)
		{

			if ($multiple)
			{
				$value = [];
				foreach ($filter[$fieldId] as $item)
				{
					if (isset($field['items'][$item]))
						$value[] = $item;
				}
				unset($item);
				$check = !empty($value);
			}
			else
			{
				$value = $filter[$fieldId];
				$check = isset($field['items'][$value]);
			}
			if ($check)
			{
				$operator = $this->getFilterOperator($field, ($multiple ? 'enum' : 'exact'));
				if (is_string($operator))
					$fieldId = $operator.$fieldId;
				unset($operator);
				$this->addFilterItems($result, [$fieldId => $value], $field);
			}
			unset($check, $value);
		}
		unset($validRawValue);
	}
}