tasks_collection_search

Позволяет обрабатывать собственные условия фильтрации задач.

Доступно начиная с версии 1.2.0.

Задачи

Входящие параметры (передаются по ссылке)

$params['collection'] object Экземпляр класса tasksCollection, соответствующий текущей коллекции задач.
$params['conditions'] array Список условий фильтрации задач, переданных в экземпляр класса коллекции и не обработанных стандартной логикой приложения. Каждый элемент списка — массив со следующими ключами:
$params['conditions'][]['field'] string Название параметра фильтрации задач. Обычно плагин обрабатывает только параметры, названия которых начинаются на идентификатор плагина, — чтобы не создавать конфликты с другими плагинами.
$params['conditions'][]['op'] string Обозначение оператора, который нужно использовать по отношению к указанному значению параметра.
$params['conditions'][]['value'] mixed Значение параметра, по отношению к которому нужно применять оператор.
$params['conditions'][]['expression'] string Выражение для фильтрации задач, составленное из оператора и значения, например, '>= 2001-01-01'.
… код плагина …

Результат работы плагина

Задачи

Пример кода плагина

PHP

public function tasksCollectionSearch($params)
{
    /** @var tasksCollection */
    $collection = $params['collection'];

    foreach ((array) $params['conditions'] as $condition) {
        // Process only filter parameter names that begin with this plugin's ID.
        if (strpos($condition['field'], $this->id . '_') === 0) {
            switch ($condition['field']) {
                // E.g.; filter tasks by the the create date specified in the 'myplugin_create_date' parameter
                // passed to the tasks collection.
                // #/tasks/myplugin_create_date>2023-12-25&hash=inbox/
                case $this->id . '_create_date':
                    if (
                        in_array($condition['op'], ['<', '<=', '=', '>', '>='])
                        && preg_match('~\d{4}-\d{2}-\d{2}~', $condition['value'])
                    ) {
                        $collection->addWhere(sprintf(
                            't.create_datetime %s "%s 00:00:00"',
                            $condition['op'],
                            $condition['value']
                        ));
                    }
                    break;
            }
        }
    }
}