diff --git a/module/bug/control.php b/module/bug/control.php index e27632ede9..276dd73c34 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -720,11 +720,11 @@ class bug extends control if(!empty($_POST)) { /* Init bug data. */ - $postData = form::data($this->config->bug->form->assignTo); - $bug = $postData->data; - $bug->id = $bugID; + $bug = form::data($this->config->bug->form->assignTo) + ->add('id', $bugID) + ->get(); - $this->bug->assign($bug); + $this->bug->assign($bug, $this->post->comment); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $this->executeHooks($bugID); diff --git a/module/bug/model.php b/module/bug/model.php index 94e7c3a2ce..770fc8b360 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -755,16 +755,17 @@ class bugModel extends model * 将任务指派给一个用户。 * Assign a bug to a user. * - * @param object $bug + * @param object $bug + * @param string $comment * @access public - * @return true|false + * @return bool */ - public function assign($bug): bool + public function assign(object $bug, string $comment = ''): bool { /* Get old bug. */ $oldBug = $this->getById($bug->id); /* If status of the bug is closed, skip it. */ - if($oldBug->status == 'closed') return array(); + if($oldBug->status == 'closed') return false; /* Update assigned of the bug. */ $this->dao->update(TABLE_BUG) @@ -774,10 +775,10 @@ class bugModel extends model ->where('id')->eq($bug->id)->exec(); if(dao::isError()) return false; - $changes = common::createChanges($oldBug, $bug); /* Record log. */ - $actionID = $this->loadModel('action')->create('bug', $bugID, 'Assigned', $this->post->comment, $this->post->assignedTo); + $changes = common::createChanges($oldBug, $bug); + $actionID = $this->loadModel('action')->create('bug', $bug->id, 'Assigned', $comment, $bug->assignedTo); $this->action->logHistory($actionID, $changes); return !dao::isError(); diff --git a/module/bug/test/bug.class.php b/module/bug/test/bug.class.php index 9d7b859583..75d81f0d42 100644 --- a/module/bug/test/bug.class.php +++ b/module/bug/test/bug.class.php @@ -917,23 +917,21 @@ class bugTest * * @param object $bug * @access public - * @return array|string + * @return array|object */ - public function assignTest(object $bug): array|string + public function assignTest(object $bug): array|object { - $changes = $this->objectModel->assign($bug); + $_SERVER['HTTP_HOST'] = ''; + $this->objectModel->assign($bug); if(dao::isError()) { return dao::getError(); } else { - $result = ''; - foreach($changes as $change) - { - if(strpos($change['field'], 'Date') === false) $result .= "{$change['field']}:{$change['old']} to {$change['new']};"; - } - return $result; + global $tester; + $bug = $tester->dao->findByID($bug->id)->from(TABLE_BUG)->fetch(); + return $bug; } } diff --git a/module/bug/test/model/assign.php b/module/bug/test/model/assign.php index 82c08342ee..7ff7ee4a82 100755 --- a/module/bug/test/model/assign.php +++ b/module/bug/test/model/assign.php @@ -4,6 +4,10 @@ include dirname(__FILE__, 5) . "/test/lib/init.php"; include dirname(__FILE__, 2) . '/bug.class.php'; zdTable('bug')->config('bug_assign')->gen(6); +zdTable('user')->gen(1); +zdTable('product')->gen(10); + +su('admin'); /** @@ -64,9 +68,9 @@ $bug6->lastEditedDate = $now; $bug6->mailto = 'user3'; $bug = new bugTest(); -r($bug->assignTest($bug1)) && p() && e('assignedTo:user1 to user2;mailto:admin to user1,user3;'); // 指派bug状态为激活的bug 更改指派人 -r($bug->assignTest($bug2)) && p() && e('assignedTo:user1 to user2;mailto:admin to user2;'); // 指派bug状态为解决的bug 更改指派人 -r($bug->assignTest($bug3)) && p() && e('0'); // 指派bug状态为关闭的bug 更改指派人 -r($bug->assignTest($bug4)) && p() && e('mailto:admin to user1;'); // 指派bug状态为激活的bug 不更改指派人 -r($bug->assignTest($bug5)) && p() && e('mailto:admin to user2;'); // 指派bug状态为解决的bug 不更改指派人 -r($bug->assignTest($bug6)) && p() && e('0'); // 指派bug状态为关闭的bug 不更改指派人 +r($bug->assignTest($bug1)) && p('assignedTo;mailto', ';') && e('user2;user1,user3;'); // 指派bug状态为激活的bug 更改指派人 +r($bug->assignTest($bug2)) && p('assignedTo;mailto', ';') && e('user2;user2;'); // 指派bug状态为解决的bug 更改指派人 +r($bug->assignTest($bug3)) && p('assignedTo;mailto', ';') && e('user1;admin'); // 指派bug状态为关闭的bug 更改指派人 +r($bug->assignTest($bug4)) && p('assignedTo;mailto', ';') && e('user1;user1;'); // 指派bug状态为激活的bug 不更改指派人 +r($bug->assignTest($bug5)) && p('assignedTo;mailto', ';') && e('user1;user2;'); // 指派bug状态为解决的bug 不更改指派人 +r($bug->assignTest($bug6)) && p('assignedTo;mailto', ';') && e('user1;admin'); // 指派bug状态为关闭的bug 不更改指派人