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