diff --git a/module/release/control.php b/module/release/control.php index d31c56e86c..5f28e07256 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -281,16 +281,8 @@ class release extends control */ public function delete(int $releaseID) { - $release = $this->release->getByID($releaseID); $this->release->delete(TABLE_RELEASE, $releaseID); - $builds = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll(); - $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->shadow)->exec(); - foreach($builds as $build) - { - if(empty($build->execution) and $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id); - } - $response = array(); $message = $this->executeHooks($releaseID); if($message) $response['message'] = $message; @@ -303,6 +295,7 @@ class release extends control } else { + $release = $this->release->getByID($releaseID); $response['result'] = 'success'; $response['load'] = inLink('browse', "productID={$release->product}"); } diff --git a/module/release/model.php b/module/release/model.php index ebaf6b44d3..85db451304 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -1055,4 +1055,31 @@ class releaseModel extends model return $bugs; } + + /** + * 删除发布。 + * Delete a release. + * + * @param string $table + * @param int $releaseID + * @access public + * @return bool + */ + public function delete(string $table, int $releaseID): bool + { + $this->dao->update(TABLE_RELEASE)->set('deleted')->eq(1)->where('id')->eq($releaseID)->exec(); + $this->loadModel('action')->create('release', $releaseID, 'deleted'); + + $release = $this->getByID($releaseID); + if(!$release) return false; + + $builds = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll(); + $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->shadow)->exec(); + foreach($builds as $build) + { + if(empty($build->execution) && $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id); + } + + return !dao::isError(); + } }