From cb1765a5e828cd030a5eaf09a95387135310e692 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 16 May 2023 09:35:06 +0800 Subject: [PATCH] * Add prepare data function of bug-resolve. --- module/bug/config/form.php | 6 +++--- module/bug/control.php | 3 +-- module/bug/model.php | 6 ++---- module/bug/zen.php | 24 ++++++++++++++++++++++-- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/module/bug/config/form.php b/module/bug/config/form.php index 39c0c1525e..11dc018e6d 100644 --- a/module/bug/config/form.php +++ b/module/bug/config/form.php @@ -96,15 +96,15 @@ $config->bug->form->assignTo['lastEditedDate'] = array('required' => false, 'typ $config->bug->form->assignTo['mailto'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); $config->bug->form->resolve = array(); -$config->bug->form->resolve['status'] = array('required' => false, 'type' => 'string', 'default' => 'resolved'); -$config->bug->form->resolve['resolvedBy'] = array('required' => false, 'type' => 'string', 'default' => ''); +$config->bug->form->resolve['resolvedBy'] = array('required' => false, 'type' => 'string', 'default' => $app->user->account); $config->bug->form->resolve['resolvedDate'] = array('required' => false, 'type' => 'string', 'default' => helper::now()); $config->bug->form->resolve['assignedTo'] = array('required' => false, 'type' => 'string', 'default' => ''); $config->bug->form->resolve['assignedDate'] = array('required' => false, 'type' => 'string', 'default' => helper::now()); $config->bug->form->resolve['lastEditedBy'] = array('required' => false, 'type' => 'string', 'default' => $app->user->account); $config->bug->form->resolve['lastEditedDate'] = array('required' => false, 'type' => 'string', 'default' => helper::now()); -$config->bug->form->resolve['confirmed'] = array('required' => false, 'type' => 'int', 'default' => 1); $config->bug->form->resolve['duplicateBug'] = array('required' => false, 'type' => 'int', 'default' => 0); $config->bug->form->resolve['buildName'] = array('required' => false, 'type' => 'string', 'default' => ''); $config->bug->form->resolve['createBuild'] = array('required' => false, 'type' => 'int', 'default' => 0); $config->bug->form->resolve['buildExecution'] = array('required' => false, 'type' => 'int', 'default' => 0); +$config->bug->form->resolve['comment'] = array('required' => false, 'type' => 'string', 'default' => ''); +$config->bug->form->resolve['uid'] = array('required' => false, 'type' => 'string', 'default' => ''); diff --git a/module/bug/control.php b/module/bug/control.php index 7b8ec67f56..ac20bb5103 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -978,8 +978,7 @@ class bug extends control /* Init bug data. */ $postData = form::data($this->config->bug->form->resolve); - $bug = $postData->data; - $bug->id = $bugID; + $bug = $this->bugZen->prepareResolve($postData, $bug); $changes = $this->bug->resolve($bug, $output); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); diff --git a/module/bug/model.php b/module/bug/model.php index edfbf77b98..7a7ccc9faa 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -857,10 +857,8 @@ class bugModel extends model */ public function resolve(object $bug, array $output = array()): array|false { - /* Construct bug data. */ - $now = helper::now(); + /* Get old bug. */ $oldBug = $this->getById($bug->id); - $bug = $this->loadModel('file')->processImgURL($bug, $this->config->bug->editor->resolve['id'], $this->post->uid); /* Set comment lang for alert error. */ $this->lang->bug->comment = $this->lang->comment; @@ -930,7 +928,7 @@ class bugModel extends model } /* Update bug. */ - $this->dao->update(TABLE_BUG)->data($bug, 'buildName,createBuild,buildExecution,comment') + $this->dao->update(TABLE_BUG)->data($bug, 'buildName,createBuild,buildExecution,comment,uid') ->autoCheck() ->batchCheck($this->config->bug->resolve->requiredFields, 'notempty') ->checkIF($bug->resolution == 'duplicate', 'duplicateBug', 'notempty') diff --git a/module/bug/zen.php b/module/bug/zen.php index 6b46c53008..a0540a2a62 100644 --- a/module/bug/zen.php +++ b/module/bug/zen.php @@ -1603,6 +1603,27 @@ class bugZen extends bug return $users; } + /** + * Prepare to resolve a bug. + * + * @param object $postData + * @param object $oldBug + * @access protected + * @return object + */ + protected function prepareResolve(object $postData, object $oldBug): object + { + $bug = $postData + ->setDefault('assignedTo', $oldBug->openedBy) + ->add('id', $oldBug->id) + ->add('status', 'resolved') + ->add('confirmed', 1) + ->removeIF($this->post->resolution != 'duplicate', 'duplicateBug') + ->get(); + + return $this->loadModel('file')->processImgURL($bug, $this->config->bug->editor->resolve['id'], $postData->get('uid')); + } + /** * 解决成功后的相关处理。 * Relevant processing after resolving bug. @@ -1623,13 +1644,12 @@ class bugZen extends bug /* Move bug card in kanban. */ if($bug->execution) { - $this->loadModel('kanban'); if(!isset($output['toColID'])) $this->loadModel('kanban')->updateLane($bug->execution, 'bug', $bug->id); if(isset($output['toColID'])) $this->loadModel('kanban')->moveCard($bug->id, $output['fromColID'], $output['toColID'], $output['fromLaneID'], $output['toLaneID']); } /* Link bug to build and release. */ - $this->linkBugToBuild($bug->id, $bug->resolvedBuild); + $this->bug->linkBugToBuild($bug->id, $bug->resolvedBuild); /* Save files. */ $files = $this->loadModel('file')->saveUpload('bug', $bug->id);