3 final class HarbormasterBuildActionController
4 extends HarbormasterController
{
6 public function handleRequest(AphrontRequest
$request) {
7 $viewer = $this->getViewer();
8 $id = $request->getURIData('id');
9 $action = $request->getURIData('action');
10 $via = $request->getURIData('via');
12 $build = id(new HarbormasterBuildQuery())
15 ->requireCapabilities(
17 PhabricatorPolicyCapability
::CAN_VIEW
,
18 PhabricatorPolicyCapability
::CAN_EDIT
,
22 return new Aphront404Response();
26 HarbormasterBuildMessageTransaction
::getTransactionObjectForMessageType(
30 return new Aphront404Response();
35 $return_uri = '/'.$build->getBuildable()->getMonogram();
38 $return_uri = $this->getApplicationURI('/build/'.$build->getID().'/');
43 $xaction->assertCanSendMessage($viewer, $build);
44 } catch (HarbormasterMessageException
$ex) {
45 return $this->newDialog()
46 ->setTitle($ex->getTitle())
47 ->appendChild($ex->getBody())
48 ->addCancelButton($return_uri);
51 if ($request->isDialogFormPost()) {
52 $build->sendMessage($viewer, $xaction->getHarbormasterBuildMessageType());
53 return id(new AphrontRedirectResponse())->setURI($return_uri);
56 $title = $xaction->newConfirmPromptTitle();
57 $body = $xaction->newConfirmPromptBody();
58 $submit = $xaction->getHarbormasterBuildMessageName();
60 return $this->newDialog()
63 ->addCancelButton($return_uri)
64 ->addSubmitButton($submit);