From 9ae5fa1361883859f30361225a49fc72313222fe Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 23 May 2023 09:26:56 +0800 Subject: [PATCH] * Fix error for batch create bugs. --- module/bug/config/form.php | 30 ++++++++++----------- module/bug/control.php | 4 +-- module/bug/ui/batchcreate.html.php | 2 +- module/bug/zen.php | 42 +++++++++++++----------------- 4 files changed, 36 insertions(+), 42 deletions(-) diff --git a/module/bug/config/form.php b/module/bug/config/form.php index f06d0e6203..d9859b34a5 100644 --- a/module/bug/config/form.php +++ b/module/bug/config/form.php @@ -124,21 +124,21 @@ $config->bug->form->batchActivate['openedBuildList'] = array('type' => 'array', $config->bug->form->batchActivate['commentList'] = array('type' => 'array', 'required' => false, 'default' => array()); $config->bug->form->batchCreate = array(); -$config->bug->form->batchCreate['modules'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['projects'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['executions'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['branches'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['lanes'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['openedBuilds'] = array('required' => true, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['titles'] = array('required' => true, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['deadlines'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['stepses'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['types'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['pris'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['severities'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['oses'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['browsers'] = array('required' => false, 'type' => array(), 'default' => array()); -$config->bug->form->batchCreate['keywords'] = array('required' => false, 'type' => array(), 'default' => array()); +$config->bug->form->batchCreate['modules'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['projects'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['executions'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['branches'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['lanes'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['openedBuilds'] = array('required' => true, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['title'] = array('required' => true, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['deadlines'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['stepses'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['types'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['pris'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['severities'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['oses'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['browsers'] = array('required' => false, 'type' => 'array', 'default' => array()); +$config->bug->form->batchCreate['keywords'] = array('required' => false, 'type' => 'array', 'default' => array()); $config->bug->form->confirm = array(); $config->bug->form->confirm['pri'] = array('required' => false, 'type' => 'int', 'default' => 3); diff --git a/module/bug/control.php b/module/bug/control.php index bd9a95328d..e38e8e0c5f 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -266,7 +266,7 @@ class bug extends control $bugs = $this->bugZen->buildBugsForBatchCreate($productID, $branch, $this->session->bugImagesFile); /* Batch create bugs. */ - $actions = $this->bug->batchCreate($productID, $branch, $output, $this->post->uploadImage, $this->session->bugImagesFile); + $actions = $this->bug->batchCreate($bugs, $productID, $output, $this->post->uploadImage, $this->session->bugImagesFile); helper::setcookie('bugModule', 0, 0); @@ -280,7 +280,7 @@ class bug extends control unset($_SESSION['bugImagesFile']); } - $response = $this->bugZen->responseAfterBatchCreate($productID, $branch, $executionID, $actions); + $response = $this->bugZen->responseAfterBatchCreate($productID, $branch, $executionID, $actions ? $actions : array()); return $this->send($response); } diff --git a/module/bug/ui/batchcreate.html.php b/module/bug/ui/batchcreate.html.php index 0fd15f8af9..5b0d1fd041 100644 --- a/module/bug/ui/batchcreate.html.php +++ b/module/bug/ui/batchcreate.html.php @@ -144,7 +144,7 @@ if(isset($executionType) && $executionType == 'kanban') /* Field of deadline. */ $items[] = array ( - 'name' => 'deadline', + 'name' => 'deadlines', 'label' => $lang->bug->deadline, 'hidden' => zget($visibleFields, 'deadline', true, false), 'control' => 'date', diff --git a/module/bug/zen.php b/module/bug/zen.php index 4cef373e6e..0b8cd9d358 100644 --- a/module/bug/zen.php +++ b/module/bug/zen.php @@ -1684,13 +1684,13 @@ class bugZen extends bug * 为批量创建bug构造数据。 * Build bugs for the batch creation. * - * @param int $productID - * @param string $branch - * @param array $bugImagesFile + * @param int $productID + * @param string $branch + * @param array|false $bugImagesFile * @access protected - * @return void + * @return array */ - protected function buildBugsForBatchCreate($productID, $branch, $bugImagesFile) + protected function buildBugsForBatchCreate(int $productID, string $branch, array|false $bugImagesFile): array { $data = form::data($this->config->bug->form->batchCreate)->get(); @@ -1706,38 +1706,32 @@ class bugZen extends bug $type = ''; $pri = 0; $bugs = array(); - $extendFields = $this->getFlowExtendFields(); + $extendFields = $this->bug->getFlowExtendFields(); foreach($data->title as $index => $title) { $title = trim($title); if(empty($title)) continue; - if($data->modules[$index] != 'ditto') $module = (int)$data->modules[$index]; - if($data->projects[$index] != 'ditto') $project = (int)$data->projects[$index]; - if($data->executions[$index] != 'ditto') $execution = (int)$data->executions[$index]; - if($data->types[$index] != 'ditto') $type = $data->types[$index]; - if($data->pris[$index] != 'ditto') $pri = $data->pris[$index]; - $bug = new stdClass(); $bug->openedBy = $this->app->user->account; $bug->openedDate = helper::now(); $bug->product = $productID; - $bug->branch = isset($data->branches) ? (int)$data->branches[$index] : 0; - $bug->module = $module; - $bug->project = $project; - $bug->execution = $execution; - $bug->openedBuild = isset($data->openedBuilds) ? implode(',', $data->openedBuilds[$index]) : ''; - $bug->color = $data->color[$index]; + $bug->branch = (int)zget($data->branches, $index, 0); + $bug->module = (int)zget($data->modules, $index, 0); + $bug->project = (int)zget($data->projects, $index, 0); + $bug->execution = (int)zget($data->executions, $index, 0); + $bug->openedBuild = isset($data->openedBuilds) && is_array($data->openedBuilds[$index]) ? implode(',', $data->openedBuilds[$index]) : zget($data->openedBuilds, $index); $bug->title = $title; - $bug->deadline = $data->deadlines[$index]; + $bug->deadline = zget($data->deadlines, $index, null); $bug->steps = nl2br($data->stepses[$index]); - $bug->type = $type; - $bug->pri = $pri; + $bug->type = zget($data->types, $index); + $bug->pri = zget($data->pris, $index); $bug->severity = $data->severities[$index]; $bug->keywords = $data->keywords[$index]; $bugs[$index] = $this->buildDataForBatchCreate($bug, $data, $index, $moduleOwners, $extendFields, $bugImagesFile); } + return $bugs; } /** @@ -1753,10 +1747,10 @@ class bugZen extends bug * @access protected * @return object */ - protected function buildDataForBatchCreate(object $bug, object $data, int $index, array $moduleOwners, array $extendFields, array $bugImagesFile): object + protected function buildDataForBatchCreate(object $bug, object $data, int $index, array $moduleOwners, array $extendFields, array|false $bugImagesFile): object { - $oses = array_filter($data->oses[$index]); - $browsers = array_filter($data->browsers[$index]); + $oses = is_array($data->oses[$index]) ? array_filter($data->oses[$index]) : array(); + $browsers = is_array($data->browsers[$index]) ? array_filter($data->browsers[$index]) : array(); $bug->os = implode(',', $oses); $bug->browser = implode(',', $browsers);