diff --git a/module/repo/control.php b/module/repo/control.php index 24494410a0..6ef7af17bd 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -208,7 +208,7 @@ class repo extends control $this->view->projects = $options; } - $projectOptions = $this->filterProject(explode(',', $repo->product), explode(',', $repo->projects)); + $projectOptions = $this->repo->filterProject(explode(',', $repo->product), explode(',', $repo->projects)); $shadowProduct = null; $productIDList = explode(',', $repo->product); @@ -1233,38 +1233,10 @@ class repo extends control ->setDefault('projects', array()) ->get(); - $projectOptions = $this->filterProject($postData->products, $postData->projects); + $projectOptions = $this->repo->filterProject($postData->products, $postData->projects); return print html::select('projects[]', $projectOptions, $postData->projects, "class='form-control chosen' multiple"); } - /** - * Remove projects without privileges. - * - * @param array $productIDList - * @param array $projectIDList - * @access private - * @return array - */ - private function filterProject($productIDList, $projectIDList = array()) - { - $allProjects = array(); - foreach($productIDList as $productID) - { - $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); - $allProjects = $allProjects + $projects; - } - - $accessProjects = explode(',', $this->app->user->view->projects); - $accessProjects = $accessProjects + $projectIDList; /* Merge projects can be accessed and exists.*/ - $projectOptions = array(); - foreach($allProjects as $projectID => $projectName) - { - if(in_array($projectID, $accessProjects)) $projectOptions[$projectID] = $projectName; - } - - return $projectOptions; - } - /** * Ajax get hosts. * diff --git a/module/repo/model.php b/module/repo/model.php index 77b8f92c71..2312aaf040 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -2209,4 +2209,27 @@ class repoModel extends model return $url; } + + /** + * Remove projects without privileges. + * + * @param array $productIDList + * @param array $projectIDList + * @access public + * @return array + */ + public function filterProject($productIDList, $projectIDList = array()) + { + /* Get all projects that can be accessed. */ + $accessProjects = array(); + foreach($productIDList as $productID) + { + $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); + $accessProjects = $accessProjects + $projects; + } + + /* Get linked projects. */ + $linkedProjects = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectIDList)->fetchPairs('id', 'name'); + return $accessProjects + $linkedProjects; /* Merge projects can be accessed and exists.*/ + } }