diff --git a/module/bug/zen.php b/module/bug/zen.php
index c1f02c6458..210b8cc404 100644
--- a/module/bug/zen.php
+++ b/module/bug/zen.php
@@ -995,7 +995,7 @@ class bugZen extends bug
{
$builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noterminate,nodone,withbranch,noreleased');
}
- $builds = $this->addReleaseLabelForBuilds($productID, $builds);
+ $builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
return $this->updateBug($bug, array('builds' => $builds));
}
@@ -1194,6 +1194,7 @@ class bugZen extends bug
$assignedToList = array_filter($assignedToList);
if(empty($assignedToList)) $assignedToList = $this->user->getPairs('devfirst|noclosed');
}
+ $openedBuilds = $this->build->addReleaseLabelForBuilds($bug->product, $openedBuilds);
if(!isset($openedBuilds[$bug->openedBuild]))
{
$build = $this->build->getByID((int)$bug->openedBuild);
@@ -1215,7 +1216,7 @@ class bugZen extends bug
}
$resolvedBuilds = $this->build->getBuildPairs(array($bug->product), $bug->branch, 'noempty');
- $resolvedBuilds = $this->addReleaseLabelForBuilds($bug->product, $resolvedBuilds);
+ $resolvedBuilds = $this->build->addReleaseLabelForBuilds($bug->product, $resolvedBuilds);
$this->config->moreLinks['case'] = inlink('ajaxGetProductCases', "bugID={$bug->id}");
@@ -2408,27 +2409,4 @@ class bugZen extends bug
return $chartOption;
}
-
- /**
- * 给版本中的发布增加标识。
- * Add label for the release in the builds.
- *
- * @param int $productID
- * @param array $builds
- * @access protected
- * @return array
- */
- protected function addReleaseLabelForBuilds(int $productID, array $builds): array
- {
- $releases = $this->loadModel('build')->getRelatedReleases(array($productID));
-
- $buildItems = array();
- foreach($builds as $buildID => $buildName) $buildItems[$buildID] = array('value' => $buildID, 'text' => $buildName);
- foreach($releases as $release)
- {
- if(isset($buildItems[$release->shadow])) $buildItems[$release->shadow]['content'] = array('html' => "
{$buildItems[$release->shadow]['text']}
", 'class' => 'w-full flex nowrap');
- }
-
- return array_values($buildItems);
- }
}
diff --git a/module/build/control.php b/module/build/control.php
index 35514661d3..62d07c28e2 100644
--- a/module/build/control.php
+++ b/module/build/control.php
@@ -234,20 +234,18 @@ class build extends control
$isJsonView = $this->app->getViewType() == 'json';
if($varName == 'openedBuild' )
{
- $params = $type == 'all' ? 'noempty,withbranch,noreleased' : 'noempty,noterminate,nodone,withbranch,noreleased';
+ $params = $type == 'all' ? 'withbranch,noreleased' : 'noterminate,nodone,withbranch,noreleased';
$builds = $this->build->getBuildPairs(array($productID), $branch, $params, 0, 'project', $build);
if($isJsonView) return print(json_encode($builds));
- $items = array();
- foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID, 'keys' => $buildName);
- return print(json_encode($items));
+ $builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
+ return print(json_encode($builds));
}
if($varName == 'openedBuilds' )
{
- $builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noreleased', 0, 'project', $build);
- $buildList = array();
- foreach($builds as $buildID => $buildName) $buildList[] = array('value' => $buildID, 'text' => $buildName);
- return $this->send($buildList);
+ $builds = $this->build->getBuildPairs(array($productID), $branch, 'noempty,noreleased', 0, 'project', $build);
+ $builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
+ return $this->send($builds);
}
if($varName == 'resolvedBuild')
{
@@ -255,17 +253,15 @@ class build extends control
$builds = $this->build->getBuildPairs(array($productID), $branch, $params, 0, 'project', $build);
if($isJsonView) return print(json_encode($builds));
- $items = array();
- foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID, 'keys' => $buildName);
- return print(json_encode($items));
+ $builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
+ return print(json_encode($builds));
}
$builds = $this->build->getBuildPairs(array($productID), $branch, $type, 0, 'project', $build, false);
if($isJsonView) return print(json_encode($builds));
- $items = array();
- foreach($builds as $buildID => $buildName) $items[] = array('text' => $buildName, 'value' => $buildID);
- return print(json_encode($items));
+ $builds = $this->build->addReleaseLabelForBuilds($productID, $builds);
+ return print(json_encode($builds));
}
/**
diff --git a/module/build/model.php b/module/build/model.php
index 0e7692c8da..456c012709 100644
--- a/module/build/model.php
+++ b/module/build/model.php
@@ -405,11 +405,12 @@ class buildModel extends model
->leftJoin(TABLE_BUILD)->alias('t2')->on('FIND_IN_SET(t2.id, t1.build)')
->leftJoin(TABLE_BRANCH)->alias('t3')->on('FIND_IN_SET(t3.id, t1.branch)')
->leftJoin(TABLE_PRODUCT)->alias('t4')->on('t1.product=t4.id')
- ->where('t1.product')->in($productIdList)
- ->beginIF(!empty($buildIdList))->andWhere('t2.id')->in($buildIdList)->fi()
+ ->where('(t1.product')->in($productIdList)
->beginIF($objectType === 'project' && $objectID)->andWhere("(FIND_IN_SET('$objectID', t1.project)")->orWhere('t1.project')->eq('0')->markRight(1)->fi()
->andWhere('t1.deleted')->eq(0)
->andWhere('t1.shadow')->ne(0)
+ ->markRight(true)
+ ->beginIF(!empty($buildIdList))->orWhere('t2.id')->in($buildIdList)->fi()
->fetchAll('id');
if($shadows === false) $shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow'); // Get the buildID under the shadow product.
@@ -900,4 +901,27 @@ class buildModel extends model
return $stories;
}
+
+ /**
+ * 给版本中的发布增加标识。
+ * Add label for the release in the builds.
+ *
+ * @param int $productID
+ * @param array $builds
+ * @access protected
+ * @return array
+ */
+ public function addReleaseLabelForBuilds(int $productID, array $builds): array
+ {
+ $releases = $this->getRelatedReleases(array($productID));
+
+ $buildItems = array();
+ foreach($builds as $buildID => $buildName) $buildItems[$buildID] = array('value' => $buildID, 'text' => $buildName);
+ foreach($releases as $release)
+ {
+ if(isset($buildItems[$release->shadow])) $buildItems[$release->shadow]['content'] = array('html' => "{$buildItems[$release->shadow]['text']}
", 'class' => 'w-full flex nowrap');
+ }
+
+ return array_values($buildItems);
+ }
}