* Refactor projectrelease::delete.

This commit is contained in:
liumengyi
2023-09-27 13:24:32 +08:00
parent 4d16e8d9eb
commit 29a6078722
+16 -35
View File
@@ -231,53 +231,34 @@ class projectrelease extends control
}
/**
* 删除一个发布。
* Delete a release.
*
* @param int $releaseID
* @param string $confirm yes|no
* @access public
* @return void
*/
public function delete($releaseID, $confirm = 'no')
public function delete(int $releaseID)
{
if($confirm == 'no')
/* Delete release. */
$this->release->delete(TABLE_RELEASE, $releaseID);
/* Delete release's shadow build. */
$release = $this->release->getByID($releaseID);
$builds = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll('id');
$this->loadModel('build')->delete(TABLE_BUILD, $release->shadow);
foreach($builds as $build)
{
return print(js::confirm($this->lang->release->confirmDelete, $this->createLink('projectrelease', 'delete', "releaseID=$releaseID&confirm=yes")));
if(empty($build->execution) and $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id);
}
else
{
$this->loadModel('build');
$this->release->delete(TABLE_RELEASE, $releaseID);
$release = $this->dao->select('*')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch();
$builds = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll('id');
$this->loadModel('build')->delete(TABLE_BUILD, $release->shadow);
foreach($builds as $build)
{
if(empty($build->execution) and $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id);
}
$message = $this->executeHooks($releaseID);
$message = $this->executeHooks($releaseID);
if($message) $response['message'] = $message;
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
/* if ajax request, send result. */
if($this->server->ajax)
{
if(dao::isError())
{
$response['result'] = 'fail';
$response['message'] = dao::getError();
}
else
{
$response['result'] = 'success';
$response['message'] = '';
}
return $this->send($response);
}
return print(js::locate($this->session->releaseList, 'parent'));
}
}
if(!$message) $message = $this->lang->release->deleted;
return $this->send(array('result' => 'success', 'message' => $message, 'load' => $this->session->releaseList ? $this->session->releaseList : inlink('browse', "projectID={$release->project}") , 'closeModal' => true));
}
/**
* Export the stories of release to HTML.