diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index d8663574da..9ddb954b08 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -107,34 +107,7 @@ class projectrelease extends control if(!empty($_POST)) { - $this->lang->projectrelease->system = $this->lang->release->system; - if(!$this->post->newSystem && !$this->post->system) $this->config->release->form->create['system']['required'] = true; - if($this->post->newSystem && !$this->post->systemName) - { - $this->config->release->form->create['systemName'] = array('type' => 'string', 'required' => true); - $this->lang->projectrelease->systemName = $this->lang->release->system; - } - - $release = form::data($this->config->release->form->create) - ->add('product', $this->post->product ? $this->post->product : 0) - ->add('branch', $this->post->branch ? $this->post->branch : 0) - ->setIF($projectID, 'project', $projectID) - ->setIF($this->post->build === false, 'build', 0) - ->get(); - - /* Check build if build is required. */ - if(strpos($this->config->release->create->requiredFields, 'build') !== false && empty($release->build)) dao::$errors['build'] = sprintf($this->lang->error->notempty, $this->lang->release->build); - - if($this->post->newSystem && $this->post->systemName && $this->post->product) - { - $system = new stdclass(); - $system->name = $this->post->systemName; - $system->product = $this->post->product; - $system->createdBy = $this->app->user->account; - $system->createdDate = helper::now(); - - $release->system = $this->loadModel('system')->create($system); - } + $release = $this->projectreleaseZen->buildReleaseForCreate($projectID); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if(!empty($_FILES['releaseFiles'])) $_FILES['files'] = $_FILES['releaseFiles']; diff --git a/module/projectrelease/zen.php b/module/projectrelease/zen.php index 14c93eab8c..c84149db9b 100644 --- a/module/projectrelease/zen.php +++ b/module/projectrelease/zen.php @@ -27,9 +27,65 @@ class projectreleaseZen extends projectrelease $this->view->products = $this->products; $this->view->product = $product; - $this->view->apps = $this->loadModel('system')->getPairs($productID, '', 'active'); $this->view->branches = (isset($product->type) and $product->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($productID, 'active', $projectID); $this->view->branch = $branch; $this->view->project = $this->project->getByID($projectID); + $this->view->appList = $this->loadModel('system')->getList($productID); + } + + /** + * 构造项目发布数据。 + * Construct project release data. + * + * @param int $projectID + * @access protected + * @return void + */ + protected function buildReleaseForCreate(int $projectID): object|false + { + $this->lang->projectrelease->system = $this->lang->release->system; + if(!$this->post->newSystem && !$this->post->system) $this->config->release->form->create['system']['required'] = true; + if($this->post->newSystem && !$this->post->systemName) + { + $this->config->release->form->create['systemName'] = array('type' => 'string', 'required' => true); + $this->lang->projectrelease->systemName = $this->lang->release->system; + } + + $release = form::data($this->config->release->form->create) + ->add('product', $this->post->product ? $this->post->product : 0) + ->add('branch', $this->post->branch ? $this->post->branch : 0) + ->setIF($projectID, 'project', $projectID) + ->setIF($this->post->build === false, 'build', 0) + ->get(); + + /* Check build if build is required. */ + if(strpos($this->config->release->create->requiredFields, 'build') !== false && empty($release->build)) dao::$errors['build'] = sprintf($this->lang->error->notempty, $this->lang->release->build); + if(!$this->post->newSystem && $this->post->system) + { + $system = $this->loadModel('system')->fetchByID((int)$this->post->system); + if(!$system) dao::$errors['system'][] = sprintf($this->lang->error->notempty, $this->lang->release->system); + + if($system->integrated == '1') + { + $releases = (array)$this->post->releases; + + $release->build = ''; + $release->releases = trim(implode(',', $releases), ','); + if(!$release->releases) dao::$errors['releases[' . key($releases) . ']'][] = sprintf($this->lang->error->notempty, $this->lang->release->includedSystem); + } + } + if(dao::isError()) return false; + + if($this->post->newSystem && $this->post->systemName && $this->post->product) + { + $system = new stdclass(); + $system->name = $this->post->systemName; + $system->product = $this->post->product; + $system->createdBy = $this->app->user->account; + $system->createdDate = helper::now(); + + $release->system = $this->loadModel('system')->create($system); + } + return $release; } }