| | <?php |
| |
|
| | namespace Kanboard\Model; |
| |
|
| | use Kanboard\Core\Base; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class SubtaskPositionModel extends Base |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function changePosition($task_id, $subtask_id, $position) |
| | { |
| | if ($position < 1 || $position > $this->db->table(SubtaskModel::TABLE)->eq('task_id', $task_id)->count()) { |
| | return false; |
| | } |
| |
|
| | $subtask_ids = $this->db->table(SubtaskModel::TABLE)->eq('task_id', $task_id)->neq('id', $subtask_id)->asc('position')->findAllByColumn('id'); |
| | $offset = 1; |
| | $results = array(); |
| |
|
| | foreach ($subtask_ids as $current_subtask_id) { |
| | if ($offset == $position) { |
| | $offset++; |
| | } |
| |
|
| | $results[] = $this->db->table(SubtaskModel::TABLE)->eq('id', $current_subtask_id)->update(array('position' => $offset)); |
| | $offset++; |
| | } |
| |
|
| | $results[] = $this->db->table(SubtaskModel::TABLE)->eq('id', $subtask_id)->update(array('position' => $position)); |
| |
|
| | return !in_array(false, $results, true); |
| | } |
| | } |
| |
|