From bbdc292f8ae0e65a9863141398ac3f8f7403cd63 Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 14 Jun 2018 17:36:01 +0800 Subject: [PATCH] * Finish task #4462. --- module/release/lang/en.php | 1 + module/release/lang/zh-cn.php | 1 + module/release/lang/zh-tw.php | 1 + module/release/model.php | 61 ++++++++++++++++++++++++----------- 4 files changed, 46 insertions(+), 18 deletions(-) diff --git a/module/release/lang/en.php b/module/release/lang/en.php index 90c6bec314..5dc36fbba7 100644 --- a/module/release/lang/en.php +++ b/module/release/lang/en.php @@ -26,6 +26,7 @@ $lang->release->batchUnlinkBug = "Batch Unlink"; $lang->release->confirmDelete = "Do you want to delete this Release?"; $lang->release->confirmUnlinkStory = "Do you want to remove this Story?"; $lang->release->confirmUnlinkBug = "Do you want to remove this Bug?"; +$lang->release->existBuild = '『Build』『%s』existed. You could change『name』or choose a『build』.'; $lang->release->basicInfo = 'Basic Info'; diff --git a/module/release/lang/zh-cn.php b/module/release/lang/zh-cn.php index 50f24ded5d..710f1d9034 100644 --- a/module/release/lang/zh-cn.php +++ b/module/release/lang/zh-cn.php @@ -26,6 +26,7 @@ $lang->release->batchUnlinkBug = "批量移除Bug"; $lang->release->confirmDelete = "您确认删除该发布吗?"; $lang->release->confirmUnlinkStory = "您确认移除该需求吗?"; $lang->release->confirmUnlinkBug = "您确认移除该Bug吗?"; +$lang->release->existBuild = '『版本』已经有『%s』这条记录了。您可以更改『发布名称』或者选择一个『版本』。'; $lang->release->basicInfo = '基本信息'; diff --git a/module/release/lang/zh-tw.php b/module/release/lang/zh-tw.php index 727858da3f..6ee2031d20 100644 --- a/module/release/lang/zh-tw.php +++ b/module/release/lang/zh-tw.php @@ -26,6 +26,7 @@ $lang->release->batchUnlinkBug = "批量移除Bug"; $lang->release->confirmDelete = "您確認刪除該發佈嗎?"; $lang->release->confirmUnlinkStory = "您確認移除該需求嗎?"; $lang->release->confirmUnlinkBug = "您確認移除該Bug嗎?"; +$lang->release->existBuild = '『版本』已經有『%s』這條記錄了。您可以更改『發佈名稱』或者選擇一個『版本』。'; $lang->release->basicInfo = '基本信息'; diff --git a/module/release/model.php b/module/release/model.php index 4ad8e8f8d0..9373150af5 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -104,21 +104,34 @@ class releaseModel extends model public function create($productID, $branch = 0) { $buildID = 0; - if($this->post->build == false) + if($this->post->build == false && $this->post->name) { - $build = fixer::input('post') - ->add('product', (int)$productID) - ->add('builder', $this->app->user->account) - ->add('branch', $branch) - ->stripTags($this->config->release->editor->create['id'], $this->config->allowedTags) - ->remove('marker,build,files,labels,uid') - ->get(); - $build = $this->loadModel('file')->processImgURL($build, $this->config->release->editor->create['id']); - $this->dao->insert(TABLE_BUILD)->data($build) - ->autoCheck() - ->check('name', 'unique', "product = {$build->product} AND branch = $branch AND deleted = '0'") - ->exec(); - $buildID = $this->dao->lastInsertID(); + $build = $this->dao->select('*')->from(TABLE_BUILD) + ->where('deleted')->eq('0') + ->andWhere('name')->eq($this->post->name) + ->andWhere('product')->eq($productID) + ->andWhere('branch')->eq($branch) + ->fetch(); + if($build) + { + dao::$errors['build'] = sprintf($this->lang->release->existBuild, $this->post->name); + } + else + { + $build = fixer::input('post') + ->add('product', (int)$productID) + ->add('builder', $this->app->user->account) + ->add('branch', $branch) + ->stripTags($this->config->release->editor->create['id'], $this->config->allowedTags) + ->remove('marker,build,files,labels,uid') + ->get(); + $build = $this->loadModel('file')->processImgURL($build, $this->config->release->editor->create['id']); + $this->dao->insert(TABLE_BUILD)->data($build) + ->autoCheck() + ->check('name', 'unique', "product = {$productID} AND branch = {$branch} AND deleted = '0'") + ->exec(); + $buildID = $this->dao->lastInsertID(); + } } if($this->post->build) $branch = $this->dao->select('branch')->from(TABLE_BUILD)->where('id')->eq($this->post->build)->fetch('branch'); @@ -137,16 +150,28 @@ class releaseModel extends model $this->dao->insert(TABLE_RELEASE)->data($release) ->autoCheck() ->batchCheck($this->config->release->create->requiredFields, 'notempty') - ->check('name', 'unique', "product = {$release->product} AND branch = $branch AND deleted = '0'") - ->exec(); + ->check('name', 'unique', "product = {$release->product} AND branch = $branch AND deleted = '0'"); - if(!dao::isError()) + if(dao::isError()) + { + if($buildID) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + return false; + } + + $this->dao->exec(); + + if(dao::isError()) + { + if($buildID) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + } + else { $releaseID = $this->dao->lastInsertID(); $this->file->updateObjectID($this->post->uid, $releaseID, 'release'); $this->file->saveUpload('release', $releaseID); $this->loadModel('score')->create('release', 'create', $releaseID); - if(!dao::isError()) return $releaseID; + + return $releaseID; } return false;