diff --git a/module/product/model.php b/module/product/model.php index 896dfb8304..de64d7fa4d 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1228,6 +1228,28 @@ class productModel extends model $this->loadModel('search')->setSearchParams($this->config->product->all->search); } + /** + * Get project pairs by product. + * + * @param array $productIDList + * @param int $branch + * @param int $appendProject + * @param string $status all|closed|unclosed + * @access public + * @return array + */ + public function getProjectPairsByProductIDList($productIDList, $branch = 0, $appendProject = 0, $status = '') + { + $projectParis = array(); + foreach($productIDList as $productID) + { + $projects = $this->getProjectPairsByProduct($productID, $branch, $appendProject, $status); + $projectParis = $projectParis + $projects; + } + + return $projectParis; + } + /** * Get project pairs by product. * diff --git a/module/repo/control.php b/module/repo/control.php index 86f044b70a..c8e49b5767 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -139,8 +139,8 @@ class repo extends control $this->app->loadLang('action'); - $products = $this->loadModel('product')->getProductPairsByProject($objectID); - $products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->andWhere('shadow')->eq(0)->fetchPairs('id', 'name'); /* Remove shadow products. */ + $products = $this->loadModel('product')->getProductPairsByProject($objectID); + $products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->andWhere('shadow')->eq(0)->fetchPairs('id', 'name'); // Remove shadow products. $shadowProduct = null; if($this->app->tab == 'project' && $objectID) $shadowProduct = $this->loadModel('product')->getShadowProductByProject($objectID); @@ -150,7 +150,8 @@ class repo extends control $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed'); $this->view->products = $products; - $this->view->relatedProjects = array(); + $this->view->projects = $this->loadModel('product')->getProjectPairsByProductIDList(array_keys($products)); + $this->view->relatedProjects = $this->app->tab == 'project' ? array($objectID) : array(); $this->view->serviceHosts = $this->loadModel('gitlab')->getPairs(); $this->view->objectID = $objectID; $this->view->shadowProduct = $shadowProduct; @@ -1250,12 +1251,7 @@ class repo extends control ->get(); /* Get all projects that can be accessed. */ - $accessProjects = array(); - foreach($postData->products as $productID) - { - $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); - $accessProjects = $accessProjects + $projects; - } + $accessProjects = $this->loadModel('product')->getProjectPairsByProductIDList($postData->products); $selectedProjects = array_intersect(array_keys($accessProjects), $postData->projects); diff --git a/module/repo/view/create.html.php b/module/repo/view/create.html.php index 7d9a5ae4af..4206b05fd0 100644 --- a/module/repo/view/create.html.php +++ b/module/repo/view/create.html.php @@ -33,7 +33,7 @@