| <?php |
|
|
| namespace Kanboard\Filter; |
|
|
| use Kanboard\Core\Filter\FilterInterface; |
| use Kanboard\Model\LinkModel; |
| use Kanboard\Model\TaskModel; |
| use Kanboard\Model\TaskLinkModel; |
| use PicoDb\Database; |
| use PicoDb\Table; |
|
|
| |
| |
| |
| |
| |
| |
| class TaskLinkFilter extends BaseFilter implements FilterInterface |
| { |
| |
| |
| |
| |
| |
| |
| private $db; |
|
|
| |
| |
| |
| |
| |
| |
| |
| public function setDatabase(Database $db) |
| { |
| $this->db = $db; |
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getAttributes() |
| { |
| return array('link'); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function apply() |
| { |
| $this->query->inSubquery(TaskModel::TABLE.'.id', $this->getSubQuery()); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| protected function getSubQuery() |
| { |
| return $this->db->table(TaskLinkModel::TABLE) |
| ->columns( |
| TaskLinkModel::TABLE.'.task_id' |
| ) |
| ->join(LinkModel::TABLE, 'id', 'link_id', TaskLinkModel::TABLE) |
| ->ilike(LinkModel::TABLE.'.label', $this->value); |
| } |
| } |
|
|