- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/filter/userfielddataprovider.php
- Класс: Bitrix\Crm\Filter\UserFieldDataProvider
- Вызов: UserFieldDataProvider::prepareListFilter
public function prepareListFilter(array &$filter, array $filterFields, array $requestFilter)
{
$userFields = $this->getUserFields();
foreach($filterFields as $filterField)
{
$id = $filterField['id'];
if (isset($userFields[$id]))
{
$isProcessed = false;
if (isset($filterField['type']))
{
if (in_array($filterField['type'], ['number', 'date', 'datetime'], true))
{
if (!empty($requestFilter[$id.'_from']))
{
$filter['>='.$id] = $requestFilter[$id.'_from'];
}
if (!empty($requestFilter[$id.'_to']))
{
$filter['<='.$id] = $requestFilter[$id.'_to'];
}
if (isset($requestFilter[$id]) && $requestFilter[$id] === false)
{
$filter[$id] = $requestFilter[$id];
}
elseif (isset($requestFilter['!' . $id]) && $requestFilter['!' . $id] === false)
{
$filter['!' . $id] = $requestFilter['!' . $id];
}
$isProcessed = true;
}
if (in_array($filterField['type'], ['string', 'text'], true))
{
if (isset($requestFilter[$id]) && $requestFilter[$id] === false)
{
$filter[$id] = $requestFilter[$id];
}
elseif (isset($requestFilter['!' . $id]) && $requestFilter['!' . $id] === false)
{
$filter['!' . $id] = $requestFilter['!' . $id];
}
}
}
if (!$isProcessed && isset($requestFilter[$id]))
{
$filter[$id] = $requestFilter[$id];
if ($userFields[$id]['USER_TYPE_ID'] === 'crm')
{
EntityHandler::internalize($filterFields, $filter);
}
}
}
}
}