diff --git a/db/update20.0.sql b/db/update20.0.sql index 89a37c56a8..f3bf15ea9f 100644 --- a/db/update20.0.sql +++ b/db/update20.0.sql @@ -24,3 +24,5 @@ ALTER TABLE `zt_project` ADD `stageBy` enum('project', 'product') NOT NULL DEFAU UPDATE `zt_project` SET `stageBy` = 'project' WHERE `division` = '0'; UPDATE `zt_project` SET `stageBy` = 'product' WHERE `division` = '1'; ALTER TABLE `zt_project` DROP `division`; + +ALTER TABLE `zt_bug` CHANGE `linkBug` `relatedBug` varchar(255) NOT NULL DEFAULT ''; diff --git a/db/zentao.sql b/db/zentao.sql index 1f1fca3af5..671c80759d 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -296,7 +296,7 @@ CREATE TABLE IF NOT EXISTS `zt_bug` ( `closedBy` varchar(30) NOT NULL DEFAULT '', `closedDate` datetime NULL, `duplicateBug` mediumint(8) unsigned NOT NULL DEFAULT '0', - `linkBug` varchar(255) NOT NULL DEFAULT '', + `relatedBug` varchar(255) NOT NULL DEFAULT '', `case` mediumint(8) unsigned NOT NULL DEFAULT '0', `caseVersion` smallint(6) NOT NULL DEFAULT '1', `feedback` mediumint(8) unsigned NOT NULL DEFAULT '0', diff --git a/module/bug/config.php b/module/bug/config.php index d42a64aed5..35515bca62 100755 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -25,7 +25,7 @@ $config->bug->list->allFields = 'id, module, execution, story, task, assignedTo, assignedDate, resolvedBy, resolution, resolvedBuild, resolvedDate, closedBy, closedDate, - duplicateBug, linkBug, + duplicateBug, relatedBug, case, lastEditedBy, lastEditedDate'; @@ -39,7 +39,7 @@ $config->bug->exportFields = 'id, product, branch, module, project, execution, s assignedTo, assignedDate, resolvedBy, resolution, resolvedBuild, resolvedDate, closedBy, closedDate, - duplicateBug, linkBug, + duplicateBug, relatedBug, case, lastEditedBy, lastEditedDate, files ,feedbackBy, notifyEmail'; diff --git a/module/bug/config/form.php b/module/bug/config/form.php index 4b4e550d5f..2977da7a71 100644 --- a/module/bug/config/form.php +++ b/module/bug/config/form.php @@ -66,7 +66,7 @@ $config->bug->form->edit['notifyEmail'] = array('required' => false, 'type' = $config->bug->form->edit['uid'] = array('required' => false, 'type' => 'string', 'default' => ''); $config->bug->form->edit['os'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); $config->bug->form->edit['browser'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); -$config->bug->form->edit['linkBug'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); +$config->bug->form->edit['relatedBug'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); $config->bug->form->edit['mailto'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); $config->bug->form->edit['deadline'] = array('required' => false, 'type' => 'date', 'default' => null); $config->bug->form->edit['resolvedDate'] = array('required' => false, 'type' => 'date', 'default' => null); diff --git a/module/bug/model.php b/module/bug/model.php index e723692539..1c725568db 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -202,7 +202,7 @@ class bugModel extends model if($bug->project) $bug->projectName = $this->bugTao->getNameFromTable($bug->project, TABLE_PROJECT, 'name'); if($bug->duplicateBug) $bug->duplicateBugTitle = $this->bugTao->getNameFromTable($bug->duplicateBug, TABLE_BUG, 'title'); if($bug->case) $bug->caseTitle = $this->bugTao->getNameFromTable($bug->case, TABLE_CASE, 'title'); - if($bug->linkBug) $bug->linkBugTitles = $this->bugTao->getBugPairsByList($bug->linkBug); + if($bug->relatedBug) $bug->relatedBugTitles = $this->bugTao->getBugPairsByList($bug->relatedBug); if($bug->toStory) $bug->toStoryTitle = $this->bugTao->getNameFromTable($bug->toStory, TABLE_STORY, 'title'); if($bug->toTask) $bug->toTaskTitle = $this->bugTao->getNameFromTable($bug->toTask, TABLE_TASK, 'name'); @@ -737,7 +737,7 @@ class bugModel extends model { $bug = $this->getByID($bugID); - $excludeBugs .= ",{$bug->id},{$bug->linkBug}"; + $excludeBugs .= ",{$bug->id},{$bug->relatedBug}"; if($bySearch) return $this->bugTao->getBySearch((array)$bug->product, 'all', 0, $queryID, $excludeBugs, 'id desc', $pager); @@ -1906,39 +1906,39 @@ class bugModel extends model /** * 更新相关 bug。 - * Update the linked bug. + * Update the related bug. * - * @param int $bugID - * @param string $linkBug - * @param string $oldLinkBug - * @access protected + * @param int $bugID + * @param string $relatedBug + * @param string $oldRelatedBug + * @access public * @return bool */ - protected function updateLinkBug(int $bugID, string $linkBug, string $oldLinkBug): bool + public function updateRelatedBug(int $bugID, string $relatedBug, string $oldRelatedBug): bool { - $linkBugs = explode(',', $linkBug); - $oldLinkBugs = explode(',', $oldLinkBug); - $addedLinkBugs = array_diff($linkBugs, $oldLinkBugs); - $removedLinkBugs = array_diff($oldLinkBugs, $linkBugs); - $changedLinkBugs = array_merge($addedLinkBugs, $removedLinkBugs); - $changedLinkBugs = $this->dao->select('id, linkbug')->from(TABLE_BUG)->where('id')->in(array_filter($changedLinkBugs))->fetchPairs(); + $relatedBugs = explode(',', $relatedBug); + $oldRelatedBugs = explode(',', $oldRelatedBug); + $addedRelatedBugs = array_diff($relatedBugs, $oldRelatedBugs); + $removedRelatedBugs = array_diff($oldRelatedBugs, $relatedBugs); + $changedRelatedBugs = array_merge($addedRelatedBugs, $removedRelatedBugs); + $changedRelatedBugs = $this->dao->select('id, relatedBug')->from(TABLE_BUG)->where('id')->in(array_filter($changedRelatedBugs))->fetchPairs(); - foreach($changedLinkBugs as $changedBugID => $linkBugs) + foreach($changedRelatedBugs as $changedBugID => $relatedBugs) { - if(in_array($changedBugID, $addedLinkBugs)) + if(in_array($changedBugID, $addedRelatedBugs)) { - $linkBugs = explode(',', $linkBugs); - if(!empty($linkBugs) && !in_array($bugID, $linkBugs)) $linkBugs[] = $bugID; + $relatedBugs = explode(',', $relatedBugs); + if(!empty($relatedBugs) && !in_array($bugID, $relatedBugs)) $relatedBugs[] = $bugID; } else { - $linkBugs = explode(',', $linkBugs); - unset($linkBugs[array_search($bugID, $linkBugs)]); + $relatedBugs = explode(',', $relatedBugs); + unset($relatedBugs[array_search($bugID, $relatedBugs)]); } - $currentLinkBug = implode(',', array_filter($linkBugs)); + $currentRelatedBug = implode(',', array_filter($relatedBugs)); - $this->dao->update(TABLE_BUG)->set('linkBug')->eq($currentLinkBug)->where('id')->eq($changedBugID)->exec(); + $this->dao->update(TABLE_BUG)->set('relatedBug')->eq($currentRelatedBug)->where('id')->eq($changedBugID)->exec(); } return !dao::isError(); diff --git a/module/bug/test/bug.class.php b/module/bug/test/bug.class.php index d75014757f..9654975a05 100644 --- a/module/bug/test/bug.class.php +++ b/module/bug/test/bug.class.php @@ -2033,29 +2033,29 @@ class bugTest * The test for updatelinkbug function. * * @param string $bugID - * @param string $linkBug - * @param string $oldLinkBug + * @param string $relatedBug + * @param string $oldRelatedBug * @access public * @return array */ - public function updateLinkBugTest($bugID, $linkBug, $oldLinkBug) + public function updateRelatedBugTest($bugID, $relatedBug, $oldRelatedBug) { - $this->objectModel->updateLinkBug($bugID, $linkBug, $oldLinkBug); + $this->objectModel->updateRelatedBug($bugID, $relatedBug, $oldRelatedBug); - $linkBugs = explode(',', $linkBug); - $oldLinkBugs = explode(',', $oldLinkBug); - $addedLinkBugs = array_diff($linkBugs, $oldLinkBugs); - $removedLinkBugs = array_diff($oldLinkBugs, $linkBugs); - $allRelatedLinkBugs = array_merge($addedLinkBugs, $removedLinkBugs, array($bugID)); + $relatedBugs = explode(',', $relatedBug); + $oldRelatedBugs = explode(',', $oldRelatedBug); + $addedRelatedBugs = array_diff($relatedBugs, $oldRelatedBugs); + $removedRelatedBugs = array_diff($oldRelatedBugs, $relatedBugs); + $allRelatedRelatedBugs = array_merge($addedRelatedBugs, $removedRelatedBugs, array($bugID)); global $tester; - $linkBugPairs = $tester->dao->select('id, linkBug')->from(TABLE_BUG) - ->where('id')->in(array_filter($allRelatedLinkBugs)) + $relatedBugPairs = $tester->dao->select('id, relatedBug')->from(TABLE_BUG) + ->where('id')->in(array_filter($allRelatedRelatedBugs)) ->andWhere('deleted')->eq('0') ->fetchPairs(); if(dao::isError()) return dao::getError(); - return $linkBugPairs; + return $relatedBugPairs; } /** diff --git a/module/bug/test/tao/updatelinkbug.php b/module/bug/test/model/updaterelatedbug.php similarity index 61% rename from module/bug/test/tao/updatelinkbug.php rename to module/bug/test/model/updaterelatedbug.php index d190f3f2e6..43e334d558 100755 --- a/module/bug/test/tao/updatelinkbug.php +++ b/module/bug/test/model/updaterelatedbug.php @@ -24,7 +24,7 @@ function initData() /** -title=bugModel->updateLinkBug(); +title=bugModel->updateRelatedBug(); timeout=0 cid=1 @@ -45,7 +45,7 @@ initData(); $bugIDList = array(1, 2, 3); $bug = new bugTest(); -r($bug->updateLinkBugTest($bugIDList[0], '2', '')) && p('2', ';') && e('1'); //测试关联bug2的关联bug同步更新为1 -r($bug->updateLinkBugTest($bugIDList[0], '3', '2')) && p('2;3', ';') && e('~~;1'); //测试关联bug2的关联bug同步更新为空,bug3的关联bug为1 -r($bug->updateLinkBugTest($bugIDList[0], '2,3', '3')) && p('2') && e('1'); //测试关联bug2的关联bug同步更新为1 -r($bug->updateLinkBugTest($bugIDList[1], '1,3', '1')) && p('3', ';') && e('1,2'); //测试关联bug3的关联bug同步更新为1,2 +r($bug->updateRelatedBugTest($bugIDList[0], '2', '')) && p('2', ';') && e('1'); //测试关联bug2的关联bug同步更新为1 +r($bug->updateRelatedBugTest($bugIDList[0], '3', '2')) && p('2;3', ';') && e('~~;1'); //测试关联bug2的关联bug同步更新为空,bug3的关联bug为1 +r($bug->updateRelatedBugTest($bugIDList[0], '2,3', '3')) && p('2') && e('1'); //测试关联bug2的关联bug同步更新为1 +r($bug->updateRelatedBugTest($bugIDList[1], '1,3', '1')) && p('3', ';') && e('1,2'); //测试关联bug3的关联bug同步更新为1,2 \ No newline at end of file diff --git a/module/bug/ui/edit.html.php b/module/bug/ui/edit.html.php index b9307f0d66..40a745d076 100644 --- a/module/bug/ui/edit.html.php +++ b/module/bug/ui/edit.html.php @@ -410,14 +410,14 @@ panel ( set::multiple(true), set::name('resolvedBuild[]'), - set::items($bug->linkBugTitles) + set::items($bug->relatedBugTitles) ), span ( set('class', 'input-group-addon'), a ( - set('id', 'linkBug'), + set('id', 'relatedBug'), set('href', 'javascript:;'), $lang->bug->linkBugs ) diff --git a/module/bug/ui/view.html.php b/module/bug/ui/view.html.php index bc6f01f272..aaff0734b3 100644 --- a/module/bug/ui/view.html.php +++ b/module/bug/ui/view.html.php @@ -68,16 +68,16 @@ if(!empty($bug->mailto)) } } -$linkBugs = array(); -if(!empty($bug->linkBugTitles)) +$relatedBugs = array(); +if(!empty($bug->relatedBugTitles)) { - foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle) + foreach($bug->relatedBugTitles as $relatedBugID => $relatedBugTitle) { - $linkBugs[] = a + $relatedBugs[] = a ( - set('href', $this->createLink('bug', 'view', "bugID=$linkBugID")), + set('href', $this->createLink('bug', 'view', "bugID=$relatedBugID")), set('data-toggle', 'modal'), - "#$linkBugID $linkBugTitle" + "#$relatedBugID $relatedBugTitle" ); } } @@ -174,7 +174,7 @@ $toStoryLink = $bug->toStory && $canViewStory ? $this->createLink('story', ' $toTaskLink = $bug->toTask && $canViewTask ? $this->createLink('task', 'view', "taskID=$bug->toTask") : ''; $legendMisc = array(); -$legendMisc['linkBug'] = array('name' => $lang->bug->linkBug, 'text' => $linkBugs); +$legendMisc['relatedBug'] = array('name' => $lang->bug->relatedBug, 'text' => $relatedBugs); $legendMisc['fromCase'] = array('name' => $lang->bug->fromCase, 'text' => $fromCaseName, 'href' => $fromCaseLink, 'attr' => array('data-toggle' => 'modal')); $legendMisc['toCase'] = array('name' => $lang->bug->toCase, 'text' => $bug->toCases); $legendMisc['toStory'] = array('name' => $lang->bug->toStory, 'text' => $toStoryName, 'href' => $toStoryLink, 'attr' => array('data-toggle' => 'modal')); diff --git a/module/bug/view/edit.html.php b/module/bug/view/edit.html.php index 65e88ba8cc..624f0aeb1f 100644 --- a/module/bug/view/edit.html.php +++ b/module/bug/view/edit.html.php @@ -291,18 +291,18 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project); bug->relatedBug;?> bug->linkBugs, '', "class='text-primary' id='linkBugsLink'");?> - linkBugTitles)) echo 'class="hidden"';?>> + relatedBugTitles)) echo 'class="hidden"';?>>