/** * Filter by link * * @access public * @param array $values List of links * @return TaskFilter */ public function filterByLinkName(array $values) { $this->query->beginOr(); $link_query = $this->createLinkQuery()->in(Link::TABLE . '.label', $values); $matching_task_ids = $link_query->findAllByColumn('task_id'); if (empty($matching_task_ids)) { $this->query->eq(Task::TABLE . '.id', 0); } else { $this->query->in(Task::TABLE . '.id', $matching_task_ids); } $this->query->closeOr(); return $this; }
/** * Filter by subtask assignee names * * @access public * @param array $values List of assignees * @return TaskFilter */ public function filterBySubtaskAssignee(array $values) { $subtaskQuery = $this->createSubtaskQuery(); $subtaskQuery->beginOr(); foreach ($values as $assignee) { if ($assignee === 'me') { $subtaskQuery->eq(Subtask::TABLE . '.user_id', $this->userSession->getId()); } else { $subtaskQuery->ilike(User::TABLE . '.username', '%' . $assignee . '%'); $subtaskQuery->ilike(User::TABLE . '.name', '%' . $assignee . '%'); } } $subtaskQuery->closeOr(); $this->query->in(Task::TABLE . '.id', $subtaskQuery->findAllByColumn('task_id')); return $this; }
/** * Filter by a list of project id * * @access public * @param array $project_ids * @return TaskFilter */ public function filterByProjects(array $project_ids) { $this->query->in(Task::TABLE . '.project_id', $project_ids); return $this; }