From e4c7988ec031cf24e9777a0ff5426cdcb0fd5b43 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Tue, 3 Dec 2024 13:42:23 +0800 Subject: [PATCH] * [bug#57717] adjust build and project data for release. --- module/projectrelease/control.php | 2 +- module/projectrelease/js/browse.ui.js | 2 ++ module/projectrelease/ui/browse.html.php | 1 - module/release/control.php | 5 ++-- module/release/model.php | 31 ++++++++++++++++++++++-- module/release/ui/browse.html.php | 17 ------------- module/release/zen.php | 18 +++++++++++++- 7 files changed, 52 insertions(+), 24 deletions(-) diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index 28efa7ccd7..e567844638 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -90,7 +90,7 @@ class projectrelease extends control $this->view->orderBy = $orderBy; $this->view->showBranch = $showBranch; $this->view->appList = $this->loadModel('system')->getPairs(); - $this->view->childReleases = $this->release->getListByCondition(explode(',', $children)); + $this->view->childReleases = $this->release->getListByCondition(explode(',', $children), 0, true); $this->display(); } diff --git a/module/projectrelease/js/browse.ui.js b/module/projectrelease/js/browse.ui.js index 2cb2f3b7f6..54c87f464a 100644 --- a/module/projectrelease/js/browse.ui.js +++ b/module/projectrelease/js/browse.ui.js @@ -11,6 +11,8 @@ window.renderCell = function(result, {col, row}) if(col.name == 'build') { + if(!row.data.buildInfos) row.data.buildInfos = row.data.builds; + let result = []; for(key in row.data.buildInfos) { diff --git a/module/projectrelease/ui/browse.html.php b/module/projectrelease/ui/browse.html.php index 4cff2e7ded..8460bd209b 100644 --- a/module/projectrelease/ui/browse.html.php +++ b/module/projectrelease/ui/browse.html.php @@ -72,7 +72,6 @@ foreach($releases as $release) } } -\a($cols); $tableData = initTableData($releases, $cols); dtable ( diff --git a/module/release/control.php b/module/release/control.php index 3f46cc234c..297a69126c 100755 --- a/module/release/control.php +++ b/module/release/control.php @@ -82,8 +82,9 @@ class release extends control foreach($releases as $release) $release->desc = str_replace(' ', ' ', strip_tags($release->desc)); + $childReleases = $this->release->getListByCondition(explode(',', $children), 0, true); $this->view->title = $this->view->product->name . $this->lang->hyphen . $this->lang->release->browse; - $this->view->releases = $this->releaseZen->processReleaseListData($releases); + $this->view->releases = $this->releaseZen->processReleaseListData($releases, $childReleases); $this->view->pageSummary = $this->release->getPageSummary($releases, $type); $this->view->type = $type; $this->view->orderBy = $orderBy; @@ -92,7 +93,7 @@ class release extends control $this->view->showBranch = $showBranch; $this->view->branchPairs = $this->loadModel('branch')->getPairs($productID); $this->view->appList = $this->loadModel('system')->getPairs(); - $this->view->childReleases = $this->release->getListByCondition(explode(',', $children)); + $this->view->childReleases = $this->release->getListByCondition(explode(',', $children), 0, true); $this->display(); } diff --git a/module/release/model.php b/module/release/model.php index 3e6d467e21..6f6ab53166 100755 --- a/module/release/model.php +++ b/module/release/model.php @@ -78,16 +78,43 @@ class releaseModel extends model * * @param array $idList * @param int $includeRelease + * @param bool $showRelated * @access public * @return array */ - public function getListByCondition(array $idList = array(), int $includeRelease = 0): array + public function getListByCondition(array $idList = array(), int $includeRelease = 0, bool $showRelated = false): array { - return $this->dao->select('*')->from(TABLE_RELEASE) + $releases = $this->dao->select('*')->from(TABLE_RELEASE) ->where('deleted')->eq(0) ->beginIF($idList)->andWhere('id')->in($idList)->fi() ->beginIF($includeRelease)->andWhere("FIND_IN_SET($includeRelease, `releases`)")->fi() ->fetchAll('id'); + if(!$showRelated) return $releases; + + $projectIdList = ''; + foreach($releases as $release) $projectIdList .= trim($release->project, ',') . ','; + $projectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->fetchPairs(); + + $builds = $this->dao->select('id,name') + ->from(TABLE_BUILD) + ->where('deleted')->eq(0) + ->fetchAll('id'); + + foreach($releases as $release) + { + $releaseBuilds = array(); + foreach(explode(',', $release->build) as $buildID) + { + if(!$buildID || !isset($builds[$buildID])) continue; + $releaseBuilds[] = $builds[$buildID]; + } + $release->builds = $releaseBuilds; + + $release->projectName = array(); + foreach(explode(',', trim($release->project, ',')) as $projectID) $release->projectName[$projectID] = zget($projectPairs, $projectID, ''); + $release->projectName = implode(' ', $release->projectName); + } + return $releases; } /** diff --git a/module/release/ui/browse.html.php b/module/release/ui/browse.html.php index 3310e5ccea..8a6a4c5c1a 100644 --- a/module/release/ui/browse.html.php +++ b/module/release/ui/browse.html.php @@ -44,23 +44,6 @@ foreach(array_column($releases, 'system') as $system) } if(!empty($cols['system'])) $cols['system']['map'] = array(0 => '') + $appList; -foreach($releases as $release) -{ - $release->rowID = $release->id; - if(empty($release->releases)) continue; - - foreach(explode(',', $release->releases) as $childID) - { - if(isset($childReleases[$childID])) - { - $child = clone $childReleases[$childID]; - $child->rowID = "{$release->id}-{$childID}"; - $child->parent = $release->id; - $releases[$child->rowID] = $child; - } - } -} - $releases = initTableData($releases, $cols, $this->release); dtable ( diff --git a/module/release/zen.php b/module/release/zen.php index b369e59bc9..4d7a5c8148 100644 --- a/module/release/zen.php +++ b/module/release/zen.php @@ -19,7 +19,7 @@ class releaseZen extends release * @access protected * @return array */ - protected function processReleaseListData(array $releaseList): array + protected function processReleaseListData(array $releaseList, array $childReleases = array()): array { $releases = array(); $this->loadModel('project'); @@ -28,6 +28,7 @@ class releaseZen extends release { $buildCount = count($release->builds); + $release->rowID = $release->id; $release->rowspan = $buildCount; $release->actions = $this->release->buildActionList($release); @@ -52,6 +53,21 @@ class releaseZen extends release $releases[] = $release; } + if(empty($release->releases)) continue; + + foreach(explode(',', $release->releases) as $childID) + { + if(isset($childReleases[$childID])) + { + $child = clone $childReleases[$childID]; + $child = current($this->processReleaseListData(array($child))); + + $child->rowID = "{$release->id}-{$childID}"; + $child->parent = $release->id; + $releases[$child->rowID] = $child; + } + } + } return $releases;