From e70ad43a6dba8ac9d37ed2005de10a42a0763699 Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Sun, 22 Nov 2020 21:55:52 +0800 Subject: [PATCH] * Modify getPGMProduct to getPGMProductPairs.: --- module/program/control.php | 36 +++++++------ module/program/model.php | 50 ++++++++----------- module/program/view/prjedit.html.php | 7 ++- .../program/view/prjmanageproducts.html.php | 2 +- module/project/model.php | 4 -- 5 files changed, 43 insertions(+), 56 deletions(-) diff --git a/module/program/control.php b/module/program/control.php index e80d6ae142..a2590393ad 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -740,7 +740,7 @@ class program extends control } } - $allProducts = $this->program->getPGMProduct($programID); + $allProducts = empty($programID) ? array() : $this->program->getPGMProductPairs($programID); $this->view->title = $this->lang->program->PRJCreate; $this->view->position[] = $this->lang->program->PRJCreate; @@ -772,11 +772,11 @@ class program extends control * Edit a project. * * @param int $projectID - * @param int $parentID + * @param int $programID * @access public * @return void */ - public function PRJEdit($projectID = 0, $parentID = 0) + public function PRJEdit($projectID = 0, $programID = 0) { $this->lang->navGroup->program = 'project'; $this->app->loadLang('project'); @@ -798,12 +798,11 @@ class program extends control } $project = $this->program->getPRJByID($projectID); - $parents = $this->program->getParentPairs(); $linkedBranches = array(); $productPlans = array(0 => ''); - $allProducts = $parentID ? $this->program->getPGMProduct($parentID) : $this->program->getPGMProduct($projectID); - $linkedProducts = $parentID ? array() : $this->project->getProducts($projectID); + $allProducts = $programID ? $this->program->getPGMProductPairs($programID) : $this->program->getPGMProductPairs($project->parent, 'assign', 'noclosed'); + $linkedProducts = $programID ? array() : $this->project->getProducts($projectID); foreach($linkedProducts as $product) { @@ -813,17 +812,17 @@ class program extends control foreach($linkedProducts as $product) { - $productPlans[$product->id] = $this->loadModel('productplan')->getPairs($product->id); + $productPlans[$product->id] = $this->productplan->getPairs($product->id); } $this->view->title = $this->lang->program->PRJEdit; $this->view->position[] = $this->lang->program->PRJEdit; - $this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $project->PM); + $this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $project->PM); $this->view->users = $this->user->getPairs('noclosed|nodeleted'); $this->view->project = $project; - $this->view->parents = $parents; - $this->view->parentID = $parentID; + $this->view->programList = $this->program->getParentPairs(); + $this->view->programID = $programID; $this->view->allProducts = array('0' => '') + $allProducts; $this->view->productPlans = $productPlans; $this->view->linkedProducts = $linkedProducts; @@ -1364,25 +1363,25 @@ class program extends control * * @param int $projectID * @param int $programID - * @param string $from * @access public * @return void */ - public function PRJManageProducts($projectID, $programID, $from = '') + public function PRJManageProducts($projectID, $programID) { $this->lang->navGroup->program = 'project'; - $browseProjectLink = $this->createLink('program', 'PRJBrowse', "programID=$programID"); + $browseProjectLink = inLink('PRJBrowse', "programID=$programID"); if(!empty($_POST)) { if(!isset($_POST['products'])) { - die(js::alert($this->lang->program->errorNoProducts) . js::locate(inlink('PRJManageProducts', "projectID=$projectID&programID=$programID&from=$from"))); + dao::$errors['message'][] = $this->lang->program->errorNoProducts; + $this->send(array('result' => 'fail', 'message' => dao::getError())); } $oldProducts = $this->project->getProducts($projectID); $this->project->updateProducts($projectID); - if(dao::isError()) die(js::error(dao::getError())); + if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); $oldProducts = array_keys($oldProducts); $newProducts = $this->project->getProducts($projectID); @@ -1390,19 +1389,18 @@ class program extends control $diffProducts = array_merge(array_diff($oldProducts, $newProducts), array_diff($newProducts, $oldProducts)); if($diffProducts) $this->loadModel('action')->create('project', $projectID, 'Managed', '', !empty($_POST['products']) ? join(',', $_POST['products']) : ''); - die(js::locate($browseProjectLink)); + $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $browseProjectLink)); } $this->loadModel('product'); - $project = $this->project->getById($projectID); - $programID = $this->program->getTopProgramID($projectID); + $project = $this->project->getById($projectID); /* Title and position. */ $title = $this->lang->project->manageProducts . $this->lang->colon . $project->name; $position[] = html::a($browseProjectLink, $project->name); $position[] = $this->lang->project->manageProducts; - $allProducts = $this->product->getPairs('noclosed|nocode', $programID); + $allProducts = $this->program->getPGMProductPairs($project->parent, 'assign', 'noclosed'); $linkedProducts = $this->project->getProducts($project->id); $linkedBranches = array(); diff --git a/module/program/model.php b/module/program/model.php index 90c632343d..fb6bf5106a 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -17,17 +17,33 @@ class programModel extends model } /** - * Get the product associated with the project. + * Get the product associated with the program. * - * @param int $programID + * @param int $programID + * @param int $mode all|assign + * @param string $status all|noclosed * @access public * @return array */ - public function getPGMProduct($programID = 0) + public function getPGMProductPairs($programID = 0, $mode = 'assign', $status = 'all') { - if(!$programID) return array(); - $programID = $this->getTopProgramID($programID); - return $this->loadModel('product')->getPairs('noclosed', $programID); + /* Get the top programID. */ + if($programID) + { + $program = $this->getPGMByID($programID); + $path = explode(',', $program->path); + $path = array_filter($path); + $programID = current($path); + } + + /* When mode equals assign and programID equals 0, you can query the standalone product. */ + $products = $this->dao->select('*')->from(TABLE_PRODUCT) + ->where('deleted')->eq(0) + ->beginIF($mode == 'assign')->andWhere('program')->eq($programID)->fi() + ->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi() + ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->products)->fi() + ->fetchPairs('id', 'name'); + return $products; } /** @@ -1034,28 +1050,6 @@ class programModel extends model return $stats; } - /** - * Get the top program which the project belongs to. - * - * @param int $projectID - * @access public - * @return object - */ - public function getTopProgramID($projectID) - { - if(empty($projectID)) return 0; - $project = $this->getPRJByID($projectID); - - if($project->parent == 0) return 0; - - $programID = 0; - $path = explode(',', $project->path); - $path = array_filter($path); - $programID = current($path); - - return $programID; - } - /** * Get project pairs. * diff --git a/module/program/view/prjedit.html.php b/module/program/view/prjedit.html.php index 153d31e22d..e6645f8169 100644 --- a/module/program/view/prjedit.html.php +++ b/module/program/view/prjedit.html.php @@ -15,7 +15,6 @@ project->weekend);?> program->errorSameProducts);?> - parent);?> id);?> program->PGMChangeTips);?> @@ -34,7 +33,7 @@ program->PGMParent;?> - parent, "class='form-control chosen' onchange='setParentProgram(this.value)'");?> + parent, "class='form-control chosen' onchange='setParentProgram(this.value)'");?> @@ -68,7 +67,7 @@ -
'> +
'>
@@ -92,7 +91,7 @@ program->PRJPM;?> - PM, "class='form-control chosen'");?> + PM, "class='form-control chosen'");?> program->PRJBudget;?> diff --git a/module/program/view/prjmanageproducts.html.php b/module/program/view/prjmanageproducts.html.php index 1d0858c175..5aac0cdcb7 100644 --- a/module/program/view/prjmanageproducts.html.php +++ b/module/program/view/prjmanageproducts.html.php @@ -18,7 +18,7 @@
-
+
project->linkedProducts;?>
diff --git a/module/project/model.php b/module/project/model.php index 77f3e8847d..b6ff075200 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1412,11 +1412,7 @@ class projectModel extends model } /** -<<<<<<< Updated upstream * Get ordered executions. -======= - * Get ordered execution. ->>>>>>> Stashed changes * * @param int $projectID * @param string $status