- Модуль: 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);
}
}