* Change the reject result of story review.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
<th><?php echo $lang->story->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, $story->assignedTo, 'class="form-control chosen"');?></td>
|
||||
</tr>
|
||||
<?php if($story->reviewedBy):?>
|
||||
<?php if($reviewers):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedBy;?></th>
|
||||
<td><?php echo $reviewers;?></td>
|
||||
|
||||
Reference in New Issue
Block a user