diff --git a/module/repo/control.php b/module/repo/control.php index 2cf4d69ecb..86f044b70a 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -1225,11 +1225,14 @@ class repo extends control ->setDefault('objectID', 0) ->get(); - $products = $postData->objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); - $shadowProduct = $this->loadModel('product')->getShadowProductByProject($postData->projectID); $selectedProducts = array_diff($postData->products, array($shadowProduct->id)); // Remove shadow product. + $products = $postData->objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); + $linkedProducts = $this->loadModel('product')->getByIdList($postData->products); + $linkedProductPairs = array_combine(array_keys($linkedProducts), array_column($linkedProducts, 'name')); + $products = $products + $linkedProductPairs; + return print (html::select('product[]', $products, $selectedProducts, "class='form-control chosen' multiple")); } @@ -1246,8 +1249,17 @@ class repo extends control ->setDefault('projects', array()) ->get(); - $projectOptions = $this->repo->filterProject($postData->products, $postData->projects); - return print html::select('projects[]', $projectOptions, $postData->projects, "class='form-control chosen' multiple"); + /* Get all projects that can be accessed. */ + $accessProjects = array(); + foreach($postData->products as $productID) + { + $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); + $accessProjects = $accessProjects + $projects; + } + + $selectedProjects = array_intersect(array_keys($accessProjects), $postData->projects); + + return print (html::select('projects[]', $accessProjects, $selectedProjects, "class='form-control chosen' multiple")); } /**