/** * Filter by comments * * @access public * @param string $string * @return TaskFilter */ public function filterByComment($string) { $this->query->beginOr(); $this->query->ilike(Comment::TABLE . '.comment', '%' . $string . '%'); $this->query->join(Comment::TABLE, 'task_id', 'id'); $this->query->closeOr(); }
/** * Filter by column name * * @access public * @param array $values List of column name * @return TaskFilter */ public function filterByColumnName(array $values) { $this->query->beginOr(); foreach ($values as $project) { $this->query->ilike(Board::TABLE . '.title', $project); } $this->query->closeOr(); }
/** * Filter by assignee names * * @access public * @param array $values List of assignees * @return TaskFilter */ public function filterByAssignee(array $values) { $this->query->beginOr(); foreach ($values as $assignee) { switch ($assignee) { case 'me': $this->query->eq(Task::TABLE . '.owner_id', $this->userSession->getId()); break; case 'nobody': $this->query->eq(Task::TABLE . '.owner_id', 0); break; default: $this->query->ilike(User::TABLE . '.username', '%' . $assignee . '%'); $this->query->ilike(User::TABLE . '.name', '%' . $assignee . '%'); } } $this->query->closeOr(); }
/** * Apply subquery filter * * @access protected * @param Table $subquery * @return Table */ protected function applySubQueryFilter(Table $subquery) { if (is_int($this->value) || ctype_digit($this->value)) { $subquery->eq(Subtask::TABLE . '.user_id', $this->value); } else { switch ($this->value) { case 'me': $subquery->eq(Subtask::TABLE . '.user_id', $this->currentUserId); break; case 'nobody': $subquery->eq(Subtask::TABLE . '.user_id', 0); break; default: $subquery->beginOr(); $subquery->ilike(User::TABLE . '.username', $this->value . '%'); $subquery->ilike(User::TABLE . '.name', '%' . $this->value . '%'); $subquery->closeOr(); } } return $subquery; }
/** * Filter by title * * @access public * @param string $title * @return TaskFilter */ public function filterByTitle($title) { $this->query->ilike('title', '%' . $title . '%'); return $this; }