diff options
author | Frédéric Guillot <fred@kanboard.net> | 2014-11-21 21:41:26 -0500 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2014-11-21 21:41:26 -0500 |
commit | 8f0e544cd91b24423951bbb5d3f3be0950a63abe (patch) | |
tree | 456291eb5d7bdb846329b8b4fe55cdb5490a442c /app/Model | |
parent | 2a850757ee5f9c1a2119c562cf6caba3eda7ceba (diff) |
Create TaskStatus model
Diffstat (limited to 'app/Model')
-rw-r--r-- | app/Model/Task.php | 56 | ||||
-rw-r--r-- | app/Model/TaskStatus.php | 112 |
2 files changed, 112 insertions, 56 deletions
diff --git a/app/Model/Task.php b/app/Model/Task.php index 25a4f000..1b2a66cd 100644 --- a/app/Model/Task.php +++ b/app/Model/Task.php @@ -182,62 +182,6 @@ class Task extends Base } /** - * Mark a task closed - * - * @access public - * @param integer $task_id Task id - * @return boolean - */ - public function close($task_id) - { - if (! $this->taskFinder->exists($task_id)) { - return false; - } - - $result = $this->db - ->table(self::TABLE) - ->eq('id', $task_id) - ->update(array( - 'is_active' => 0, - 'date_completed' => time() - )); - - if ($result) { - $this->event->trigger(self::EVENT_CLOSE, array('task_id' => $task_id) + $this->taskFinder->getById($task_id)); - } - - return $result; - } - - /** - * Mark a task open - * - * @access public - * @param integer $task_id Task id - * @return boolean - */ - public function open($task_id) - { - if (! $this->taskFinder->exists($task_id)) { - return false; - } - - $result = $this->db - ->table(self::TABLE) - ->eq('id', $task_id) - ->update(array( - 'is_active' => 1, - 'date_completed' => 0 - )); - - if ($result) { - $this->event->trigger(self::EVENT_OPEN, array('task_id' => $task_id) + $this->taskFinder->getById($task_id)); - } - - return $result; - } - - /** * Remove a task * * @access public diff --git a/app/Model/TaskStatus.php b/app/Model/TaskStatus.php new file mode 100644 index 00000000..99faffde --- /dev/null +++ b/app/Model/TaskStatus.php @@ -0,0 +1,112 @@ +<?php + +namespace Model; + +/** + * Task Status + * + * @package model + * @author Frederic Guillot + */ +class TaskStatus extends Base +{ + /** + * Return true if the task is closed + * + * @access public + * @param integer $task_id Task id + * @return boolean + */ + public function isClosed($task_id) + { + return $this->checkStatus($task_id, Task::STATUS_CLOSED); + } + + /** + * Return true if the task is open + * + * @access public + * @param integer $task_id Task id + * @return boolean + */ + public function isOpen($task_id) + { + return $this->checkStatus($task_id, Task::STATUS_OPEN); + } + + /** + * Mark a task closed + * + * @access public + * @param integer $task_id Task id + * @return boolean + */ + public function close($task_id) + { + return $this->changeStatus($task_id, Task::STATUS_CLOSED, time(), Task::EVENT_CLOSE); + } + + /** + * Mark a task open + * + * @access public + * @param integer $task_id Task id + * @return boolean + */ + public function open($task_id) + { + return $this->changeStatus($task_id, Task::STATUS_OPEN, 0, Task::EVENT_OPEN); + } + + /** + * Common method to change the status of task + * + * @access private + * @param integer $task_id Task id + * @param integer $status Task status + * @param integer $date_completed Timestamp + * @param string $event Event name + * @return boolean + */ + private function changeStatus($task_id, $status, $date_completed, $event) + { + if (! $this->taskFinder->exists($task_id)) { + return false; + } + + $result = $this->db + ->table(Task::TABLE) + ->eq('id', $task_id) + ->update(array( + 'is_active' => $status, + 'date_completed' => $date_completed, + 'date_modification' => time(), + )); + + if ($result) { + $this->event->trigger( + $event, + array('task_id' => $task_id) + $this->taskFinder->getById($task_id) + ); + } + + return $result; + } + + /** + * Check the status of task + * + * @access private + * @param integer $task_id Task id + * @param integer $status Task status + * @return boolean + */ + private function checkStatus($task_id, $status) + { + return $this->db + ->table(Task::TABLE) + ->eq('id', $task_id) + ->eq('is_active', $status) + ->count() === 1; + } +} |