summaryrefslogtreecommitdiff
path: root/app/Model
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-07-23 21:48:59 -0400
committerFrederic Guillot <fred@kanboard.net>2016-07-23 21:48:59 -0400
commit24555080fd3ca8607f0a798b5a0e4be98ff131f8 (patch)
tree8a92479149bbc079a7f6b1daa678d612534d80a2 /app/Model
parentf216e345ba2ad7486037c393c0475a1371ca2b00 (diff)
Create new class SubtaskStatusModel
Diffstat (limited to 'app/Model')
-rw-r--r--app/Model/SubtaskModel.php184
-rw-r--r--app/Model/SubtaskStatusModel.php85
-rw-r--r--app/Model/TaskStatusModel.php2
3 files changed, 138 insertions, 133 deletions
diff --git a/app/Model/SubtaskModel.php b/app/Model/SubtaskModel.php
index 2ac6095c..568e27a4 100644
--- a/app/Model/SubtaskModel.php
+++ b/app/Model/SubtaskModel.php
@@ -21,25 +21,13 @@ class SubtaskModel extends Base
const TABLE = 'subtasks';
/**
- * Task "done" status
- *
- * @var integer
- */
- const STATUS_DONE = 2;
-
- /**
- * Task "in progress" status
- *
- * @var integer
- */
- const STATUS_INPROGRESS = 1;
-
- /**
- * Task "todo" status
+ * Subtask status
*
* @var integer
*/
const STATUS_TODO = 0;
+ const STATUS_INPROGRESS = 1;
+ const STATUS_DONE = 2;
/**
* Events
@@ -82,26 +70,6 @@ class SubtaskModel extends Base
}
/**
- * Add subtask status status to the resultset
- *
- * @access public
- * @param array $subtasks Subtasks
- * @return array
- */
- public function addStatusName(array $subtasks)
- {
- $status = $this->getStatusList();
-
- foreach ($subtasks as &$subtask) {
- $subtask['status_name'] = $status[$subtask['status']];
- $subtask['timer_start_date'] = isset($subtask['timer_start_date']) ? $subtask['timer_start_date'] : 0;
- $subtask['is_timer_started'] = ! empty($subtask['timer_start_date']);
- }
-
- return $subtasks;
- }
-
- /**
* Get the query to fetch subtasks assigned to a user
*
* @access public
@@ -177,35 +145,6 @@ class SubtaskModel extends Base
}
/**
- * Prepare data before insert/update
- *
- * @access public
- * @param array $values Form values
- */
- public function prepare(array &$values)
- {
- $this->helper->model->removeFields($values, array('another_subtask'));
- $this->helper->model->resetFields($values, array('time_estimated', 'time_spent'));
- }
-
- /**
- * Prepare data before insert
- *
- * @access public
- * @param array $values Form values
- */
- public function prepareCreation(array &$values)
- {
- $this->prepare($values);
-
- $values['position'] = $this->getLastPosition($values['task_id']) + 1;
- $values['status'] = isset($values['status']) ? $values['status'] : self::STATUS_TODO;
- $values['time_estimated'] = isset($values['time_estimated']) ? $values['time_estimated'] : 0;
- $values['time_spent'] = isset($values['time_spent']) ? $values['time_spent'] : 0;
- $values['user_id'] = isset($values['user_id']) ? $values['user_id'] : 0;
- }
-
- /**
* Get the position of the last column for a given project
*
* @access public
@@ -261,74 +200,6 @@ class SubtaskModel extends Base
}
/**
- * Close all subtasks of a task
- *
- * @access public
- * @param integer $task_id
- * @return boolean
- */
- public function closeAll($task_id)
- {
- return $this->db->table(self::TABLE)->eq('task_id', $task_id)->update(array('status' => self::STATUS_DONE));
- }
-
- /**
- * Change the status of subtask
- *
- * @access public
- * @param integer $subtask_id
- * @return boolean|integer
- */
- public function toggleStatus($subtask_id)
- {
- $subtask = $this->getById($subtask_id);
- $status = ($subtask['status'] + 1) % 3;
-
- $values = array(
- 'id' => $subtask['id'],
- 'status' => $status,
- 'task_id' => $subtask['task_id'],
- );
-
- if (empty($subtask['user_id']) && $this->userSession->isLogged()) {
- $values['user_id'] = $this->userSession->getId();
- }
-
- return $this->update($values) ? $status : false;
- }
-
- /**
- * Get the subtask in progress for this user
- *
- * @access public
- * @param integer $user_id
- * @return array
- */
- public function getSubtaskInProgress($user_id)
- {
- return $this->db->table(self::TABLE)
- ->eq('status', self::STATUS_INPROGRESS)
- ->eq('user_id', $user_id)
- ->findOne();
- }
-
- /**
- * Return true if the user have a subtask in progress
- *
- * @access public
- * @param integer $user_id
- * @return boolean
- */
- public function hasSubtaskInProgress($user_id)
- {
- return $this->configModel->get('subtask_restriction') == 1 &&
- $this->db->table(self::TABLE)
- ->eq('status', self::STATUS_INPROGRESS)
- ->eq('user_id', $user_id)
- ->exists();
- }
-
- /**
* Remove
*
* @access public
@@ -368,4 +239,53 @@ class SubtaskModel extends Base
}
});
}
+
+ /**
+ * Prepare data before insert/update
+ *
+ * @access protected
+ * @param array $values Form values
+ */
+ protected function prepare(array &$values)
+ {
+ $this->helper->model->removeFields($values, array('another_subtask'));
+ $this->helper->model->resetFields($values, array('time_estimated', 'time_spent'));
+ }
+
+ /**
+ * Prepare data before insert
+ *
+ * @access protected
+ * @param array $values Form values
+ */
+ protected function prepareCreation(array &$values)
+ {
+ $this->prepare($values);
+
+ $values['position'] = $this->getLastPosition($values['task_id']) + 1;
+ $values['status'] = isset($values['status']) ? $values['status'] : self::STATUS_TODO;
+ $values['time_estimated'] = isset($values['time_estimated']) ? $values['time_estimated'] : 0;
+ $values['time_spent'] = isset($values['time_spent']) ? $values['time_spent'] : 0;
+ $values['user_id'] = isset($values['user_id']) ? $values['user_id'] : 0;
+ }
+
+ /**
+ * Add subtask status status to the resultset
+ *
+ * @access public
+ * @param array $subtasks Subtasks
+ * @return array
+ */
+ public function addStatusName(array $subtasks)
+ {
+ $status = $this->getStatusList();
+
+ foreach ($subtasks as &$subtask) {
+ $subtask['status_name'] = $status[$subtask['status']];
+ $subtask['timer_start_date'] = isset($subtask['timer_start_date']) ? $subtask['timer_start_date'] : 0;
+ $subtask['is_timer_started'] = ! empty($subtask['timer_start_date']);
+ }
+
+ return $subtasks;
+ }
}
diff --git a/app/Model/SubtaskStatusModel.php b/app/Model/SubtaskStatusModel.php
new file mode 100644
index 00000000..26cbb67d
--- /dev/null
+++ b/app/Model/SubtaskStatusModel.php
@@ -0,0 +1,85 @@
+<?php
+
+namespace Kanboard\Model;
+
+use Kanboard\Core\Base;
+
+/**
+ * Class SubtaskStatusModel
+ *
+ * @package Kanboard\Model
+ * @author Frederic Guillot
+ */
+class SubtaskStatusModel extends Base
+{
+ /**
+ * Get the subtask in progress for this user
+ *
+ * @access public
+ * @param integer $user_id
+ * @return array
+ */
+ public function getSubtaskInProgress($user_id)
+ {
+ return $this->db->table(SubtaskModel::TABLE)
+ ->eq('status', SubtaskModel::STATUS_INPROGRESS)
+ ->eq('user_id', $user_id)
+ ->findOne();
+ }
+
+ /**
+ * Return true if the user have a subtask in progress
+ *
+ * @access public
+ * @param integer $user_id
+ * @return boolean
+ */
+ public function hasSubtaskInProgress($user_id)
+ {
+ return $this->configModel->get('subtask_restriction') == 1 &&
+ $this->db->table(SubtaskModel::TABLE)
+ ->eq('status', SubtaskModel::STATUS_INPROGRESS)
+ ->eq('user_id', $user_id)
+ ->exists();
+ }
+
+ /**
+ * Change the status of subtask
+ *
+ * @access public
+ * @param integer $subtask_id
+ * @return boolean|integer
+ */
+ public function toggleStatus($subtask_id)
+ {
+ $subtask = $this->subtaskModel->getById($subtask_id);
+ $status = ($subtask['status'] + 1) % 3;
+
+ $values = array(
+ 'id' => $subtask['id'],
+ 'status' => $status,
+ 'task_id' => $subtask['task_id'],
+ );
+
+ if (empty($subtask['user_id']) && $this->userSession->isLogged()) {
+ $values['user_id'] = $this->userSession->getId();
+ }
+
+ return $this->subtaskModel->update($values) ? $status : false;
+ }
+
+ /**
+ * Close all subtasks of a task
+ *
+ * @access public
+ * @param integer $task_id
+ * @return boolean
+ */
+ public function closeAll($task_id)
+ {
+ return $this->db
+ ->table(SubtaskModel::TABLE)
+ ->eq('task_id', $task_id)
+ ->update(array('status' => SubtaskModel::STATUS_DONE));
+ }
+}
diff --git a/app/Model/TaskStatusModel.php b/app/Model/TaskStatusModel.php
index ea304beb..dc114698 100644
--- a/app/Model/TaskStatusModel.php
+++ b/app/Model/TaskStatusModel.php
@@ -45,7 +45,7 @@ class TaskStatusModel extends Base
*/
public function close($task_id)
{
- $this->subtaskModel->closeAll($task_id);
+ $this->subtaskStatusModel->closeAll($task_id);
return $this->changeStatus($task_id, TaskModel::STATUS_CLOSED, time(), TaskModel::EVENT_CLOSE);
}