• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/provider/taskfilterbuilder.php
  • Класс: BitrixTasksProviderTaskFilterBuilder
  • Вызов: TaskFilterBuilder::prepareForRootQuery
private function prepareForRootQuery(array $filter): array
{
	foreach ($filter as $filterKey => $field)
	{
		$operation = $this->parseOperation($filterKey);
		if ($operation !== self::OPERATION_DEFAULT)
		{
			$filterKey = mb_substr($filterKey, mb_strlen($operation));
		}
		switch ($filterKey)
		{
			case 'META::ID_OR_NAME':
				$filter[$filterKey] = '%' . $this->prepareForSprintf((string)$field) . '%';
				break;

			case '::SUBFILTER-TITLE':
				foreach ($field as $fieldKey => $fieldValue)
				{
					$operation = $this->parseOperation($fieldKey);
					if ($operation === self::OPERATION_LIKE)
					{
						$filter[$filterKey][$fieldKey] = '%' . $this->prepareForSprintf((string)$fieldValue) . '%';
					}
					else
					{
						$filter[$filterKey][$fieldKey] = $this->prepareForSprintf((string)$fieldValue);
					}
				}
				break;

			case '::SUBFILTER-TAG':
				$tags = [];
				foreach ($field as $fieldKey => $fieldValue)
				{
					if (!is_array($filterKey))
					{
						continue;
					}
					foreach ($fieldValue as $tag)
					{
						$tags[] = $this->prepareForSprintf((string)$tag);
					}
					$filter[$filterKey][$fieldKey] = $tags;
				}
				break;

			default:
				if (strpos($filterKey, 'UF_') === 0)
				{
					if ($operation === self::OPERATION_LIKE)
					{
						$filter[$operation . $filterKey] = '%' . $this->prepareForSprintf((string)$field['value']) . '%';

					}
					else
					{
						$filter[$operation . $filterKey] = $this->prepareForSprintf((string)$field['value']);
					}
				}
		}
	}

	return $filter;
}