diff options
Diffstat (limited to 'app/Model/TaskFinder.php')
-rw-r--r-- | app/Model/TaskFinder.php | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/Model/TaskFinder.php b/app/Model/TaskFinder.php index 27fa8150..cf756cd8 100644 --- a/app/Model/TaskFinder.php +++ b/app/Model/TaskFinder.php @@ -3,6 +3,7 @@ namespace Model; use PDO; +use Model\TaskLink; /** * Task Finder model @@ -84,6 +85,7 @@ class TaskFinder extends Base '(SELECT count(*) FROM task_has_files WHERE task_id=tasks.id) AS nb_files', '(SELECT count(*) FROM task_has_subtasks WHERE task_id=tasks.id) AS nb_subtasks', '(SELECT count(*) FROM task_has_subtasks WHERE task_id=tasks.id AND status=2) AS nb_completed_subtasks', + '(SELECT count(*) FROM ' . TaskLink::TABLE . ' WHERE ' . TaskLink::TABLE . '.task_id = tasks.id) AS nb_links', 'tasks.id', 'tasks.reference', 'tasks.title', @@ -128,6 +130,29 @@ class TaskFinder extends Base ->asc('tasks.position') ->findAll(); } + + /** + * Get ids and names of all (limited by $limit) tasks for a given project and status + * + * @access public + * @param integer $project_id Project id + * @param integer $status_id Status id + * @param integer $exclude_id Exclude this task id in the result + * @param integer $limit Number of tasks to list + * @return array + */ + public function getList($project_id, $status_id = Task::STATUS_OPEN, $exclude_id=null, $limit=50) + { + $sql = $this->db + ->hashtable(Task::TABLE) + ->eq('project_id', $project_id) + ->eq('is_active', $status_id) + ->limit($limit); + if (null != $exclude_id) { + $sql->neq('id', $exclude_id); + } + return $sql->getAll('id', 'title'); + } /** * Get all tasks for a given project and status |