diff --git a/module/execution/view/storyestimate.html.php b/module/execution/view/storyestimate.html.php index 3641a61782..fd35adfca8 100644 --- a/module/execution/view/storyestimate.html.php +++ b/module/execution/view/storyestimate.html.php @@ -48,7 +48,7 @@ account);?> account, "class='form-control'");?> estimate)):?> - estimate->{$user->account}->estimate;?> + estimate->{$user->account}) ? $estimateInfo->estimate->{$user->account}->estimate : '';?> diff --git a/module/story/control.php b/module/story/control.php index 6e75dcb859..51feca4f02 100644 --- a/module/story/control.php +++ b/module/story/control.php @@ -609,7 +609,7 @@ class story extends control /* Get users. */ $users = $this->user->getPairs('pofirst|nodeleted', "$story->assignedTo,$story->openedBy,$story->closedBy"); - $reviewedBy = explode(',', trim($reviewedBy, ',')); + $reviewedBy = explode(',', trim($story->reviewedBy, ',')); $reivewerList = ''; foreach($reviewedBy as $reviewer) $reivewerList .= zget($users, $reviewer) . ' '; @@ -2202,7 +2202,6 @@ class story extends control $oldStory = $this->dao->findById((int)$params['storyID'])->from(TABLE_STORY)->fetch(); $status = $oldStory->status; if($params['result'] == 'revert') $status = 'active'; - if($params['result'] == 'reject') $status = 'closed'; } die($status); } diff --git a/module/story/model.php b/module/story/model.php index dc645bed67..4706b9d1c8 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -1147,18 +1147,12 @@ class storyModel extends model $oldStory = $this->dao->findById($storyID)->from(TABLE_STORY)->fetch(); $now = helper::now(); $date = helper::today(); - $story = fixer::input('post') + $story = fixer::input('post') ->setDefault('reviewedDate', $date) ->setDefault('lastEditedBy', $this->app->user->account) ->setDefault('lastEditedDate', $now) - ->setIF($this->post->result == 'reject', 'closedBy', $this->app->user->account) - ->setIF($this->post->result == 'reject', 'closedDate', $now) - ->setIF($this->post->result == 'reject', 'assignedTo', 'closed') - ->setIF($this->post->result == 'reject', 'status', 'closed') - ->setIF($this->post->result == 'reject', 'stage', 'closed') ->setIF($this->post->result == 'revert', 'version', $this->post->preVersion) ->setIF($this->post->result == 'revert', 'status', 'active') - ->setIF($this->post->closedReason == 'done', 'stage', 'released') ->setIF(strpos($oldStory->reviewedBy, $this->app->user->account) === false, 'reviewedBy', $oldStory->reviewedBy . ',' . $this->app->user->account) ->removeIF($this->post->result != 'reject', 'closedReason, duplicateStory, childStories') ->removeIF($this->post->result == 'reject' and $this->post->closedReason != 'duplicate', 'duplicateStory') @@ -1173,15 +1167,35 @@ class storyModel extends model /* Update the story status by review rules. */ $passCount = 0; + $rejectCount = 0; $reviewRule = $this->config->story->reviewRules; $reviewerList = $this->dao->select('reviewer,result')->from(TABLE_STORYREVIEW)->where('story')->eq($storyID)->andWhere('version')->eq($oldStory->version)->fetchPairs('reviewer', 'result'); - foreach($reviewerList as $reviewer => $result) $passCount = $result == 'pass' ? $passCount + 1 : $passCount; - if($reviewRule == 'allpass' and $passCount == count($reviewerList)) $story->status = 'active'; - if($reviewRule == 'halfpass' and $passCount >= floor(count($reviewerList) / 2) + 1) $story->status = 'active'; + foreach($reviewerList as $reviewer => $result) + { + $passCount = $result == 'pass' ? $passCount + 1 : $passCount; + $rejectCount = $result == 'reject' ? $rejectCount + 1 : $rejectCount; + } + if($reviewRule == 'allpass') + { + if($passCount == count($reviewerList)) $story->status = 'active'; + if($rejectCount == count($reviewerList)) $story->status = 'closed'; + } + if($reviewRule == 'halfpass') + { + if($passCount >= floor(count($reviewerList) / 2) + 1) $story->status = 'active'; + if($rejectCount >= floor(count($reviewerList) / 2) + 1) $story->status = 'closed'; + } + if($story->status == 'closed') + { + $story->closedBy = $this->app->user->account; + $story->closedDate = $now; + $story->assignedTo = 'closed'; + $story->stage = 'closed'; + if($this->post->closedReason == 'done') $story->stage = 'released'; + } $this->dao->update(TABLE_STORY)->data($story) ->autoCheck() - ->batchCheck($this->config->story->review->requiredFields, 'notempty') ->checkIF($this->post->result == 'reject', 'closedReason', 'notempty') ->checkIF($this->post->result == 'reject' and $this->post->closedReason == 'duplicate', 'duplicateStory', 'notempty') ->where('id')->eq($storyID)->exec(); diff --git a/module/story/view/edit.html.php b/module/story/view/edit.html.php index c8bdff9d99..7c44d63ec8 100644 --- a/module/story/view/edit.html.php +++ b/module/story/view/edit.html.php @@ -204,7 +204,7 @@ story->assignedTo;?> assignedTo, 'class="form-control chosen"');?> - reviewedBy):?> + story->reviewedBy;?>