From f8f71f59af0aefc6eaea7456e0d842ad3826b55d Mon Sep 17 00:00:00 2001 From: liyuchun Date: Fri, 14 Jan 2022 09:21:04 +0800 Subject: [PATCH] * Finish task #47233. --- module/job/model.php | 18 ++++++++++++++++++ module/sonarqube/control.php | 8 +++++++- module/sonarqube/view/browseproject.html.php | 5 +++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/module/job/model.php b/module/job/model.php index 3fdded8db6..bf4b7e9b24 100644 --- a/module/job/model.php +++ b/module/job/model.php @@ -593,4 +593,22 @@ class jobModel extends model ->beginIF($jobID > 0)->andWhere('id')->ne($jobID)->fi() ->fetchAll('repo'); } + + /** + * Get job pairs by sonarqube projectkeys. + * + * @param int $sonarqubeID + * @param array $projectKeys + * @access public + * @return array + */ + public function getJobBySonarqubeProject($sonarqubeID, $projectKeys = array()) + { + return $this->dao->select('projectKey,id')->from(TABLE_JOB) + ->where('deleted')->eq(0) + ->andWhere('frame')->eq('sonarqube') + ->andWhere('sonarqubeServer')->eq($sonarqubeID) + ->andWhere('projectKey')->in($projectKeys) + ->fetchPairs(); + } } diff --git a/module/sonarqube/control.php b/module/sonarqube/control.php index e49eb0276e..d14caa9713 100644 --- a/module/sonarqube/control.php +++ b/module/sonarqube/control.php @@ -201,7 +201,12 @@ class sonarqube extends control $keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword'); $sonarqubeProjectList = $this->sonarqube->apiGetProjects($sonarqubeID, $keyword); - foreach($sonarqubeProjectList as $key => $sonarqubeProject) !isset($sonarqubeProject->lastAnalysisDate) ? $sonarqubeProject->lastAnalysisDate = '' : ''; + $projectKeyList = array(); + foreach($sonarqubeProjectList as $key => $sonarqubeProject) + { + if(!isset($sonarqubeProject->lastAnalysisDate)) $sonarqubeProject->lastAnalysisDate = ''; + $projectKeyList[] = $sonarqubeProject->key; + } /* Data sort. */ list($order, $sort) = explode('_', $orderBy); @@ -221,6 +226,7 @@ class sonarqube extends control $this->view->title = $this->lang->sonarqube->common . $this->lang->colon . $this->lang->sonarqube->browseProject; $this->view->sonarqubeID = $sonarqubeID; $this->view->sonarqubeProjectList = empty($sonarqubeProjectList) ? $sonarqubeProjectList: $sonarqubeProjectList[$pageID - 1]; + $this->view->projectJobPairs = $this->loadModel('job')->getJobBySonarqubeProject($sonarqubeID, $projectKeyList); $this->view->orderBy = $orderBy; $this->display(); } diff --git a/module/sonarqube/view/browseproject.html.php b/module/sonarqube/view/browseproject.html.php index e5b8b19bb6..f5995930d7 100644 --- a/module/sonarqube/view/browseproject.html.php +++ b/module/sonarqube/view/browseproject.html.php @@ -63,6 +63,11 @@ /* Fix error when request type is PATH_INFO and the project key contains '-'.*/ $projectKey = str_replace('-', '*', $sonarqubeProject->key); common::printLink('sonarqube', 'deleteProject', "sonarqubeID=$sonarqubeID&project=$projectKey", " ", 'hiddenwin', "title='{$lang->sonarqube->deleteProject}' class='btn btn-primary'"); + if(isset($projectJobPairs[$sonarqubeProject->key])) + { + $jobID = $projectJobPairs[$sonarqubeProject->key]; + common::printIcon('sonarqube', 'execJob', "jobID=$jobID", '', 'list', 'sonarqube', 'hiddenwin'); + } ?>