Path: blob/master/src/applications/harbormaster/controller/HarbormasterBuildActionController.php
12256 views
<?php12final class HarbormasterBuildActionController3extends HarbormasterController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();7$id = $request->getURIData('id');8$action = $request->getURIData('action');9$via = $request->getURIData('via');1011$build = id(new HarbormasterBuildQuery())12->setViewer($viewer)13->withIDs(array($id))14->requireCapabilities(15array(16PhabricatorPolicyCapability::CAN_VIEW,17PhabricatorPolicyCapability::CAN_EDIT,18))19->executeOne();20if (!$build) {21return new Aphront404Response();22}2324$xaction =25HarbormasterBuildMessageTransaction::getTransactionObjectForMessageType(26$action);2728if (!$xaction) {29return new Aphront404Response();30}3132switch ($via) {33case 'buildable':34$return_uri = '/'.$build->getBuildable()->getMonogram();35break;36default:37$return_uri = $this->getApplicationURI('/build/'.$build->getID().'/');38break;39}4041try {42$xaction->assertCanSendMessage($viewer, $build);43} catch (HarbormasterMessageException $ex) {44return $this->newDialog()45->setTitle($ex->getTitle())46->appendChild($ex->getBody())47->addCancelButton($return_uri);48}4950if ($request->isDialogFormPost()) {51$build->sendMessage($viewer, $xaction->getHarbormasterBuildMessageType());52return id(new AphrontRedirectResponse())->setURI($return_uri);53}5455$title = $xaction->newConfirmPromptTitle();56$body = $xaction->newConfirmPromptBody();57$submit = $xaction->getHarbormasterBuildMessageName();5859return $this->newDialog()60->setTitle($title)61->appendChild($body)62->addCancelButton($return_uri)63->addSubmitButton($submit);64}6566}676869