/** * Apply filter * * @access public * @return FilterInterface */ public function apply() { $task_ids = $this->db->table(TagModel::TABLE)->ilike(TagModel::TABLE . '.name', $this->value)->asc(TagModel::TABLE . '.project_id')->join(TaskTagModel::TABLE, 'tag_id', 'id')->findAllByColumn(TaskTagModel::TABLE . '.task_id'); if (empty($task_ids)) { $task_ids = array(-1); } $this->query->in(TaskModel::TABLE . '.id', $task_ids); return $this; }
/** * Get subquery * * @access protected * @return Table */ protected function getSubQuery() { return $this->db->table(TaskLinkModel::TABLE)->columns(TaskLinkModel::TABLE . '.task_id', LinkModel::TABLE . '.label')->join(LinkModel::TABLE, 'id', 'link_id', TaskLinkModel::TABLE)->ilike(LinkModel::TABLE . '.label', $this->value); }
/** * Get subquery * * @access protected * @return Table */ protected function getSubQuery() { $subquery = $this->db->table(Subtask::TABLE)->columns(Subtask::TABLE . '.user_id', Subtask::TABLE . '.task_id', User::TABLE . '.name', User::TABLE . '.username')->join(User::TABLE, 'id', 'user_id', Subtask::TABLE)->neq(Subtask::TABLE . '.status', Subtask::STATUS_DONE); return $this->applySubQueryFilter($subquery); }
protected function getTaskIdsWithGivenTag() { return $this->db->table(TagModel::TABLE)->ilike(TagModel::TABLE . '.name', $this->value)->asc(TagModel::TABLE . '.project_id')->join(TaskTagModel::TABLE, 'tag_id', 'id')->findAllByColumn(TaskTagModel::TABLE . '.task_id'); }