From ac6883ab87c9da74905bfe6837c3ff3d782a8d22 Mon Sep 17 00:00:00 2001 From: hufangzhou Date: Tue, 30 Apr 2024 08:59:06 +0800 Subject: [PATCH] * Refactor programplan-edit. --- module/programplan/control.php | 24 +++++++++++++++++++- module/programplan/zen.php | 41 ++++++++++------------------------ 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/module/programplan/control.php b/module/programplan/control.php index f1f942c271..02d0287969 100644 --- a/module/programplan/control.php +++ b/module/programplan/control.php @@ -155,7 +155,29 @@ class programplan extends control { if($_POST) { - $plan = $this->programplanZen->buildPlanForEdit($planID, $projectID); + $this->loadModel('execution'); + if(!empty($this->config->setCode) && strpos(",{$this->config->execution->edit->requiredFields},", ',code,') !== false) $this->config->programplan->form->edit['code']['required'] = true; + + $plan = form::data()->get(); + if(empty($plan->realBegan)) $plan->realBegan = null; + if(empty($plan->realEnd)) $plan->realEnd = null; + + /* 设置计划和真实起始日期间隔时间。 */ + /* Set planDuration and realDuration. */ + if(in_array($this->config->edition, array('max', 'ipd'))) + { + $plan->planDuration = $this->programplan->getDuration($plan->begin, $plan->end); + $plan->realDuration = $this->programplan->getDuration($plan->realBegan, $plan->realEnd); + } + + if($plan->parent) + { + $parentStage = $this->programplan->getByID($plan->parent); + $plan->acl = $parentStage->acl; + if($parentStage->attribute != 'mix') $plan->attribute = $parentStage->attribute; + } + + $this->programplanZen->prepareEditPlan($planID, $projectID, $plan, isset($parentStage) ? $parentStage : null); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $changes = $this->programplan->update($planID, $projectID, $plan); diff --git a/module/programplan/zen.php b/module/programplan/zen.php index 18e55d7414..7f0f7fc05b 100644 --- a/module/programplan/zen.php +++ b/module/programplan/zen.php @@ -146,42 +146,25 @@ class programplanZen extends programplan * 处理编辑阶段的请求数据。 * Processing edit request data. * - * @param int $planID - * @param int $projectID + * @param int $planID + * @param int $projectID + * @param object $plan + * @param object|null $parentStage * @access protected - * @return object + * @return bool */ - protected function buildPlanForEdit(int $planID, int $projectID): object + protected function prepareEditPlan(int $planID, int $projectID, object $plan, object|null $parentStage = null): bool { - $this->loadModel('execution'); - if(!empty($this->config->setCode) && strpos(",{$this->config->execution->edit->requiredFields},", ',code,') !== false) $this->config->programplan->form->edit['code']['required'] = true; - - $plan = form::data()->get(); - if(empty($plan->realBegan)) $plan->realBegan = null; - if(empty($plan->realEnd)) $plan->realEnd = null; - - /* 设置计划和真实起始日期间隔时间。 */ - /* Set planDuration and realDuration. */ - if(in_array($this->config->edition, array('max', 'ipd'))) - { - $plan->planDuration = $this->programplan->getDuration($plan->begin, $plan->end); - $plan->realDuration = $this->programplan->getDuration($plan->realBegan, $plan->realEnd); - } - if($plan->parent) { - $parentStage = $this->programplan->getByID($plan->parent); - $plan->acl = $parentStage->acl; - if($parentStage->attribute != 'mix') $plan->attribute = $parentStage->attribute; + if(!empty($parentStage) && $plan->begin < $parentStage->begin) dao::$errors['begin'] = sprintf($this->lang->programplan->error->letterParent, $parentStage->begin); + if(!empty($parentStage) && $plan->end > $parentStage->end) dao::$errors['end'] = sprintf($this->lang->programplan->error->greaterParent, $parentStage->end); - if(isset($parentStage) && $plan->begin < $parentStage->begin) dao::$errors['begin'] = sprintf($this->lang->programplan->error->letterParent, $parentStage->begin); - if(isset($parentStage) && $plan->end > $parentStage->end) dao::$errors['end'] = sprintf($this->lang->programplan->error->greaterParent, $parentStage->end); + if(dao::isError()) return false; } - if(dao::isError()) return $plan; - - if($projectID) $this->execution->checkBeginAndEndDate($projectID, $plan->begin, $plan->end, $plan->parent); - if(dao::isError()) return $plan; + if($projectID) $this->loadModel('execution')->checkBeginAndEndDate($projectID, $plan->begin, $plan->end, $plan->parent); + if(dao::isError()) return false; if(!empty($this->config->setPercent)) { @@ -203,7 +186,7 @@ class programplanZen extends programplan } } - return $plan; + return !dao::isError(); } /**