diff --git a/module/bug/model.php b/module/bug/model.php index 66710fe602..554fc62cc6 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -510,7 +510,7 @@ class bugModel extends model if($changes) $this->action->logHistory($actionID, $changes); /* If the edition is not pms, update feedback. */ - if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status); + if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status, $oldBug->id); return !dao::isError(); } @@ -608,7 +608,7 @@ class bugModel extends model if(isset($kanbanParams['toColID'])) $this->kanban->moveCard($bug->id, $kanbanParams['fromColID'], $kanbanParams['toColID'], $kanbanParams['fromLaneID'], $kanbanParams['toLaneID']); } - if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status); + if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status, $oldBug->id); $changes = common::createChanges($oldBug, $bug); $files = $this->loadModel('file')->saveUpload('bug', $bug->id); @@ -639,7 +639,7 @@ class bugModel extends model $this->dao->update(TABLE_BUG)->data($bug, 'comment')->autoCheck()->checkFlow()->where('id')->eq($bug->id)->exec(); if(dao::isError()) return false; - if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status); + if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status, $oldBug->id); $changes = common::createChanges($oldBug, $bug); $actionID = $this->loadModel('action')->create('bug', $bug->id, 'Closed', $this->post->comment); diff --git a/module/bug/zen.php b/module/bug/zen.php index 5950719d54..be78118fc2 100644 --- a/module/bug/zen.php +++ b/module/bug/zen.php @@ -2012,7 +2012,7 @@ class bugZen extends bug if($this->config->edition != 'open') { $todo = $this->dao->select('type, objectID')->from(TABLE_TODO)->where('id')->eq($todoID)->fetch(); - if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done'); + if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done', '', $todoID); } return !dao::isError(); @@ -2106,7 +2106,7 @@ class bugZen extends bug /* 更新反馈的状态。*/ /* Update the status of feedback. */ - if(($this->config->edition != 'open') && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status); + if(($this->config->edition != 'open') && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status, $oldBug->id); return !dao::isError(); } @@ -2345,7 +2345,7 @@ class bugZen extends bug /* 更新相关反馈的状态。*/ /* Update status of related feedback. */ - if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status); + if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, $bug->status, $oldBug->status, $oldBug->id); } /** diff --git a/module/story/control.php b/module/story/control.php index 2c647837d4..c770807256 100755 --- a/module/story/control.php +++ b/module/story/control.php @@ -909,18 +909,6 @@ class story extends control $changes = $this->story->close($storyID, $postData); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - if($changes) - { - $preStatus = $story->status; - $isChanged = !empty($story->changedBy) ? true : false; - if($preStatus == 'reviewing') $preStatus = $isChanged ? 'changing' : 'draft'; - - $actionID = $this->action->create('story', $storyID, 'Closed', $this->post->comment, ucfirst($this->post->closedReason) . ($this->post->duplicateStory ? ':' . (int)$this->post->duplicateStory : '') . "|$preStatus"); - $this->action->logHistory($actionID, $changes); - } - - $this->dao->update(TABLE_STORY)->set('assignedTo')->eq('closed')->where('id')->eq((int)$storyID)->exec(); - $this->executeHooks($storyID); if(isInModal()) diff --git a/module/story/model.php b/module/story/model.php index a7e9dbdf33..f8b0a2f4bc 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -590,7 +590,7 @@ class storyModel extends model if($this->config->edition != 'open') { $todo = $this->dao->select('type, objectID')->from(TABLE_TODO)->where('id')->eq($todoID)->fetch(); - if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done'); + if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done', '', $todoID); } } @@ -906,7 +906,7 @@ class storyModel extends model } unset($oldStory->parent, $story->parent); - if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status); + if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status, $storyID); if(!empty($story->reviewer)) { @@ -1035,7 +1035,7 @@ class storyModel extends model if($preStatus == 'reviewing') $preStatus = $isChanged ? 'changing' : 'draft'; } - if($this->config->edition != 'open' && $oldParentStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldParentStory->feedback, $newParentStory->status, $oldParentStory->status); + if($this->config->edition != 'open' && $oldParentStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldParentStory->feedback, $newParentStory->status, $oldParentStory->status, $oldParentStory->id); } else { @@ -1185,7 +1185,7 @@ class storyModel extends model if($this->config->edition != 'open' && $oldStory->feedback && !isset($feedbacks[$oldStory->feedback])) { $feedbacks[$oldStory->feedback] = $oldStory->feedback; - $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status); + $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status, $storyID); } } @@ -1538,16 +1538,25 @@ class storyModel extends model ->exec(); if(dao::isError()) return false; - if(!dao::isError()) + $changes = common::createChanges($oldStory, $story); + if($changes) { - if($oldStory->isParent == '1') $this->closeAllChildren($storyID, $story->closedReason); - $this->setStage($storyID); - $this->loadModel('score')->create('story', 'close', $storyID); + $preStatus = $story->status; + $isChanged = !empty($story->changedBy) ? true : false; + if($preStatus == 'reviewing') $preStatus = $isChanged ? 'changing' : 'draft'; - if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status); + $actionID = $this->loadModel('action')->create('story', $storyID, 'Closed', $this->post->comment, ucfirst($this->post->closedReason) . ($this->post->duplicateStory ? ':' . (int)$this->post->duplicateStory : '') . "|$preStatus"); + $this->action->logHistory($actionID, $changes); } - $changes = common::createChanges($oldStory, $story); + $this->dao->update(TABLE_STORY)->set('assignedTo')->eq('closed')->where('id')->eq((int)$storyID)->exec(); + + if($oldStory->isParent == '1') $this->closeAllChildren($storyID, $story->closedReason); + $this->setStage($storyID); + $this->loadModel('score')->create('story', 'close', $storyID); + + if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status, $storyID); + if(!empty($postData->closeSync)) { $this->relieveTwins($oldStory->product, $storyID); @@ -1607,7 +1616,7 @@ class storyModel extends model if($this->config->edition != 'open' && $oldStory->feedback && !isset($feedbacks[$oldStory->feedback])) { $feedbacks[$oldStory->feedback] = $oldStory->feedback; - $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status); + $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status, $storyID); } $this->loadModel('score')->create('story', 'close', $storyID); @@ -2198,7 +2207,7 @@ class storyModel extends model $changes = common::createChanges($oldStory, $story); if(!empty($oldStory->twins)) $this->syncTwins($storyID, $oldStory->twins, $changes, 'Activated'); - if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status); + if($this->config->edition != 'open' && $oldStory->feedback) $this->loadModel('feedback')->updateStatus('story', $oldStory->feedback, $story->status, $oldStory->status, $storyID); if($this->config->edition == 'ipd' and $oldStory->demand) { diff --git a/module/story/tao.php b/module/story/tao.php index fb16e1f244..7f788e3284 100644 --- a/module/story/tao.php +++ b/module/story/tao.php @@ -985,7 +985,7 @@ class storyTao extends storyModel if(empty($bugID) or empty($storyID)) return; $oldBug = $this->dao->select('*')->from(TABLE_BUG)->where('id')->eq($bugID)->fetch(); - if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, 'closed', $oldBug->status); + if($this->config->edition != 'open' && $oldBug->feedback) $this->loadModel('feedback')->updateStatus('bug', $oldBug->feedback, 'closed', $oldBug->status, $bugID); $now = helper::now(); $bug = new stdclass(); @@ -1048,7 +1048,7 @@ class storyTao extends storyModel if($this->config->edition == 'open')return; $todo = $this->dao->select('type, objectID')->from(TABLE_TODO)->where('id')->eq($todoID)->fetch(); - if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done'); + if($todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done', '', $todoID); } /** diff --git a/module/task/control.php b/module/task/control.php index f6ce6c0e8b..fc4a796c71 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -636,6 +636,9 @@ class task extends control $result = $this->task->afterStart($task, $changes, 0, $output); if(is_array($result)) return $this->send($result); + if($taskData->status == 'done') $this->loadModel('score')->create('task', 'finish', $task->id); + if($this->config->edition != 'open' && $task->feedback) $this->loadModel('feedback')->updateStatus('task', $task->feedback, $taskData->status, $task->status, $task->id); + /* Get the information returned after a task is started. */ $from = zget($output, 'from'); $response = $this->taskZen->responseAfterChangeStatus($task, $from); diff --git a/module/task/model.php b/module/task/model.php index f409a10abc..5ab71841d4 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -63,7 +63,7 @@ class taskModel extends model if($oldTask->parent > 0) $this->updateParentStatus($taskID); if($oldTask->story) $this->loadModel('story')->setStage($oldTask->story); - if($this->config->edition != 'open' && $oldTask->feedback) $this->loadModel('feedback')->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status); + if($this->config->edition != 'open' && $oldTask->feedback) $this->loadModel('feedback')->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status, $taskID); $this->updateKanbanCell($taskID, $drag, $oldTask->execution); @@ -172,7 +172,7 @@ class taskModel extends model if($this->config->edition != 'open' && $oldTask->feedback && !isset($feedbacks[$oldTask->feedback])) { $feedbacks[$oldTask->feedback] = $oldTask->feedback; - $this->feedback->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status); + $this->feedback->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status, $taskID); } if(!empty($task->story) && !empty($task->isParent) && $this->post->syncChildren) $this->syncStoryToChildren($task); @@ -252,7 +252,7 @@ class taskModel extends model /* If the todo comes from a feedback, update the feedback information. */ $todo = $this->dao->findByID($todoID)->from(TABLE_TODO)->fetch(); - if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done'); + if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, 'done', '', $todoID); } /* If the task comes from a design, update the task information. */ @@ -402,7 +402,7 @@ class taskModel extends model if(!empty($changes)) $this->action->logHistory($actionID, $changes); } - if($this->config->edition != 'open' && $oldTask->feedback) $this->loadModel('feedback')->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status); + if($this->config->edition != 'open' && $oldTask->feedback) $this->loadModel('feedback')->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status, $oldTask->id); if(!empty($oldTask->mode) && empty($task->mode)) $this->dao->delete()->from(TABLE_TASKTEAM)->where('task')->eq($task->id)->exec(); if(!empty($task->story) && $this->post->syncChildren) $this->syncStoryToChildren($task); @@ -1263,9 +1263,6 @@ class taskModel extends model if(dao::isError()) return false; if($task->consumed != $oldTask->consumed || $task->left != $oldTask->left) $this->loadModel('program')->refreshProjectStats($oldTask->project); - - if($task->status == 'done') $this->loadModel('score')->create('task', 'finish', $oldTask->id); - if($this->config->edition != 'open' && $oldTask->feedback) $this->loadModel('feedback')->updateStatus('task', $oldTask->feedback, $task->status, $oldTask->status); return common::createChanges($oldTask, $task); } @@ -3417,7 +3414,7 @@ class taskModel extends model /* Create action record. */ $this->taskTao->createAutoUpdateTaskAction($parentTask, 'child'); - if($this->config->edition != 'open' && $parentTask->feedback) $this->loadModel('feedback')->updateStatus('task', $parentTask->feedback, $status, $parentTask->status); + if($this->config->edition != 'open' && $parentTask->feedback) $this->loadModel('feedback')->updateStatus('task', $parentTask->feedback, $status, $parentTask->status, $parentID); } } @@ -3461,7 +3458,7 @@ class taskModel extends model /* Create action record. */ $this->taskTao->createAutoUpdateTaskAction($childTask, 'parent'); - if($this->config->edition != 'open' && $childTask->feedback) $this->loadModel('feedback')->updateStatus('task', $childTask->feedback, $status, $childTask->status); + if($this->config->edition != 'open' && $childTask->feedback) $this->loadModel('feedback')->updateStatus('task', $childTask->feedback, $status, $childTask->status, $childID); } } diff --git a/module/todo/model.php b/module/todo/model.php index 83c4de7ddf..de3c969745 100755 --- a/module/todo/model.php +++ b/module/todo/model.php @@ -71,7 +71,7 @@ class todoModel extends model if(!empty($todo->uid)) $this->loadModel('file')->updateObjectID($todo->uid, $todoID, 'todo'); if(!empty($oldTodo->cycle)) $this->createByCycle(array($todoID => $todo)); - if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, $todo->status); + if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, $todo->status, '', $todoID); return common::createChanges($oldTodo, (array)$todo); } @@ -113,7 +113,7 @@ class todoModel extends model if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID && !isset($feedbacks[$todo->objectID])) { $feedbacks[$todo->objectID] = $todo->objectID; - $this->feedback->updateStatus('todo', $todo->objectID, $todo->status); + $this->feedback->updateStatus('todo', $todo->objectID, $todo->status, '', $todoID); } /* Create changes of one object. */ @@ -169,7 +169,7 @@ class todoModel extends model { $todo = $this->todoTao->fetch($todoID); $feedbackID = $todo->objectID ? $todo->objectID : '' ; - if($feedbackID) $this->loadModel('feedback')->updateStatus('todo', $feedbackID, 'done'); + if($feedbackID) $this->loadModel('feedback')->updateStatus('todo', $feedbackID, 'done', '', $todoID); } return true; } @@ -393,7 +393,7 @@ class todoModel extends model $this->dao->update(TABLE_TODO)->set('status')->eq('wait')->where('id')->eq($todoID)->exec(); $todo = $this->fetchByID($todoID); - if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, $todo->status); + if($this->config->edition != 'open' && $todo->type == 'feedback' && $todo->objectID) $this->loadModel('feedback')->updateStatus('todo', $todo->objectID, $todo->status, '', $todoID); $this->loadModel('action')->create('todo', $todoID, 'activated', '', 'wait'); @@ -420,7 +420,7 @@ class todoModel extends model if($this->config->edition != 'open') { $feedbackID = $this->dao->select('objectID')->from(TABLE_TODO)->where('id')->eq($todoID)->andWhere('type')->eq('feedback')->fetch('objectID'); - if($feedbackID) $this->loadModel('feedback')->updateStatus('todo', $feedbackID, 'closed'); + if($feedbackID) $this->loadModel('feedback')->updateStatus('todo', $feedbackID, 'closed', '', $todoID); } return true; }