|
<?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); |
|
} |
|
} |
|
|