- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/filter/filter.php
- Класс: BitrixMainFilterFilter
- Вызов: Filter::removeNotUiFilterFields
protected function removeNotUiFilterFields(array &$filter): void
{
$filterFieldsIds = array_map(
function(Field $filterField)
{
return $filterField->getId();
},
$this->getFields()
);
$sqlWhere = new CSQLWhere();
foreach ($filter as $fieldId => $fieldValue)
{
if (in_array($fieldId, $this->uiFilterServiceFields, true))
{
continue;
}
if (in_array($fieldId, $filterFieldsIds, true))
{
continue;
}
$fieldIdWithoutOperation = $sqlWhere->makeOperation($fieldId)['FIELD'];
if (in_array($fieldIdWithoutOperation, $filterFieldsIds, true))
{
continue;
}
foreach ($this->uiFilterPostfixes as $postfix)
{
$postfixLength = mb_strlen($postfix);
if (mb_substr($fieldId, -$postfixLength) === $postfix)
{
$realFieldId = mb_substr($fieldId, 0, -$postfixLength);
if (in_array($realFieldId, $filterFieldsIds, true))
{
continue(2);
}
}
}
unset($filter[$fieldId]); // not a valid filter field
}
}