Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }