• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/provider/taskfilterbuilder.php
  • Класс: BitrixTasksProviderTaskFilterBuilder
  • Вызов: TaskFilterBuilder::translateUfFilter
private function translateUfFilter(string $field, string $operation, array $uf, bool $needEscape = true): array
{
	$conditions = [];
	$values = $uf['value'];
	if (!is_array($values))
	{
		$values = [$values];
	}

	foreach ($values as $value)
	{
		if ($uf['type'] === 'datetime')
		{
			$value = new Date($value);
		}

		if (is_null($value))
		{
			$conditions[] = new Condition($field, '=', 0);
			$conditions[] = new Condition($field, '=', null);
			break;
		}

		if (in_array($operation, [self::OPERATION_LESS, self::OPERATION_LESS_EQ, self::OPERATION_GREAT, self::OPERATION_GREAT_EQ]))
		{
			$conditions[] = new Condition($field, $operation, $value);
			break;
		}

		if ($operation === self::OPERATION_LIKE)
		{
			if (
				$needEscape
				&& is_scalar($value)
			)
			{
				$value = $this->escapeStencilCharacters($value);
			}
			$conditions[] = new Condition($field, 'like', '%' . $value . '%');
			break;
		}

		if ($operation === self::OPERATION_NOT)
		{
			$conditions[] = new Condition($field, '!=', $value);
			break;
		}

		$conditions[] = new Condition($field, '=', $value);
	}

	return $conditions;
}