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