diff --git a/module/bug/ui/create.field.php b/module/bug/ui/create.field.php index 90803a4749..3d8b8d1139 100644 --- a/module/bug/ui/create.field.php +++ b/module/bug/ui/create.field.php @@ -6,6 +6,8 @@ global $lang, $app; $isShadowProduct = data('product.shadow'); $noMultipleProject = data('project.multiple') === '0'; $isOriginalProduct = (int)data('bug.productID') === (int)data('productID'); +$resultFiles = data('resultFiles'); +$resultFiles = array_values($resultFiles); $fields = defineFieldList('bug.create', 'bug'); @@ -50,7 +52,7 @@ $fields->field('steps') $fields->field('files') ->width('full') - ->control('fileSelector', array('defaultFiles' => data('resultFiles'))); + ->control('fileSelector', array('defaultFiles' => $resultFiles)); $fields->field('story')->foldable(); @@ -72,4 +74,6 @@ $fields->field('module')->className($isShadowProduct ? 'w-1/2' : 'w-1/4')->class $fields->field('openedBuild')->className($isShadowProduct ? 'w-1/2' : 'w-1/4')->className('full:w-1/2'); +$fields->field('resultFiles')->control('hidden')->value(data('resultFiles')); + if($isShadowProduct && !$isOriginalProduct) $fields->moveAfter('module', 'product'); diff --git a/module/bug/zen.php b/module/bug/zen.php index d5bc9a78be..fa7720c30a 100644 --- a/module/bug/zen.php +++ b/module/bug/zen.php @@ -1103,7 +1103,7 @@ class bugZen extends bug $this->view->allBuilds = !empty($bug->allBuilds) ? $bug->allBuilds : ''; $this->view->allUsers = !empty($bug->allUsers) ? $bug->allUsers : ''; $this->view->releasedBuilds = $this->loadModel('release')->getReleasedBuilds((int)$bug->productID, (string)$bug->branch); - $this->view->resultFiles = array_values($resultFiles); + $this->view->resultFiles = $resultFiles; $this->view->contactList = $this->loadModel('user')->getContactLists(); $this->view->branchID = $bug->branch != 'all' ? $bug->branch : '0'; } @@ -1822,25 +1822,26 @@ class bugZen extends bug */ private function updateFileAfterCreate(int $bugID): bool { - if(isset($this->post->resultFiles)) + $this->loadModel('file'); + if(!empty($_POST['resultFiles'])) { $resultFiles = $this->post->resultFiles; - if(isset($this->post->deleteFiles)) + if($resultFiles) $resultFiles = json_decode($resultFiles, true); + if(!empty($_POST['deleteFiles'])) { - foreach($this->post->deleteFiles as $deletedCaseFileID) $resultFiles = trim(str_replace(",$deletedCaseFileID,", ',', ",$resultFiles,"), ','); + foreach($this->post->deleteFiles as $deletedCaseFileID) unset($resultFiles[$deletedCaseFileID]); } - $files = $this->dao->select('*')->from(TABLE_FILE)->where('id')->in($resultFiles)->fetchAll('id'); - foreach($files as $file) + foreach($resultFiles as $file) { - unset($file->id); - $file->objectType = 'bug'; - $file->objectID = $bugID; - $this->dao->insert(TABLE_FILE)->data($file)->exec(); + unset($file['id']); + $file['objectType'] = 'bug'; + $file['objectID'] = $bugID; + $this->file->saveFile($file, 'url,deleted,realPath,webPath,name,url,extra'); } } $uid = $this->post->uid ? $this->post->uid : ''; - $this->loadModel('file')->updateObjectID($uid, $bugID, 'bug'); + $this->file->updateObjectID($uid, $bugID, 'bug'); $this->file->saveUpload('bug', $bugID); return !dao::isError();