diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 8413708a3c..f83126aaaf 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1034,6 +1034,28 @@ class gitlabModel extends model return $this->projects[$gitlabID][$projectID]; } + /** + * Multi get projects by repos. + * + * @param object $repos + * @access public + * @return void + */ + public function apiMultiGetProjects($repos) + { + $requests = array(); + foreach($repos as $id => $repo) + { + $requests[$id]['url'] = sprintf($this->getApiRoot($repo->serviceHost, false), "/projects/{$repo->serviceProject}"); + } + $this->app->loadClass('requests', true); + $results = requests::request_multiple($requests); + foreach($results as $id => $result) + { + if(!empty($result->body) and substr($result->body, 0, 1) == '{') $this->projects[$repos[$id]->serviceHost][$repos[$id]->serviceProject] = json_decode($result->body); + } + } + /** * Get single user by API. * diff --git a/module/repo/model.php b/module/repo/model.php index f810ceb24e..e23a8b25ff 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -120,6 +120,16 @@ class repoModel extends model ->page($pager) ->fetchAll('id'); + if($getCodePath) + { + $gitlabRepos = array(); + foreach($repos as $repo) + { + if($repo->SCM == 'Gitlab') $gitlabRepos[$repo->id] = $repo; + } + $this->loadModel('gitlab')->apiMultiGetProjects($gitlabRepos); + } + /* Get products. */ $productIdList = $this->loadModel('product')->getProductIDByProject($projectID, false); foreach($repos as $i => $repo)