summaryrefslogtreecommitdiff
path: root/app/Model/TaskFinder.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/TaskFinder.php')
-rw-r--r--app/Model/TaskFinder.php25
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