From e9ac65b7dccb9bd4b9022ca2a90e6cafa7e59153 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 31 Oct 2017 11:13:40 +0800 Subject: [PATCH] * fix for task #3239. --- module/project/model.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/module/project/model.php b/module/project/model.php index 709a63e87a..9d118e88b8 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1378,6 +1378,7 @@ class projectModel extends model if($this->post->stories == false) return false; $this->loadModel('action'); $versions = $this->loadModel('story')->getVersions($this->post->stories); + $lastOrder = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('project')->eq($projectID)->orderBy('order_desc')->limit(1)->fetch('order'); foreach($this->post->stories as $key => $storyID) { $productID = (int)$this->post->products[$storyID]; @@ -1386,6 +1387,7 @@ class projectModel extends model $data->product = $productID; $data->story = $storyID; $data->version = $versions[$storyID]; + $data->order = ++$lastOrder; $this->dao->insert(TABLE_PROJECTSTORY)->data($data)->exec(); $this->story->setStage($storyID); $this->action->create('story', $storyID, 'linked2project', '', $projectID); @@ -1403,8 +1405,18 @@ class projectModel extends model public function unlinkStory($projectID, $storyID) { $this->dao->delete()->from(TABLE_PROJECTSTORY)->where('project')->eq($projectID)->andWhere('story')->eq($storyID)->limit(1)->exec(); + + $order = 1; + $storys = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('project')->eq($projectID)->orderBy('order')->fetchAll(); + foreach($storys as $projectstory) + { + if($projectstory->order != $order) $this->dao->update(TABLE_PROJECTSTORY)->set('`order`')->eq($order)->where('project')->eq($projectID)->andWhere('story')->eq($projectstory->story)->exec(); + $order++; + } + $this->loadModel('story')->setStage($storyID); $this->loadModel('action')->create('story', $storyID, 'unlinkedfromproject', '', $projectID); + $tasks = $this->dao->select('id')->from(TABLE_TASK)->where('story')->eq($storyID)->andWhere('project')->eq($projectID)->andWhere('status')->in('wait,doing')->fetchPairs('id'); $this->dao->update(TABLE_TASK)->set('status')->eq('cancel')->where('id')->in($tasks)->exec(); foreach($tasks as $taskID)