@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class DrydockRepositoryOperationDismissController
4 extends DrydockRepositoryOperationController {
5
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8 $id = $request->getURIData('id');
9
10 $operation = id(new DrydockRepositoryOperationQuery())
11 ->setViewer($viewer)
12 ->withIDs(array($id))
13 ->requireCapabilities(
14 array(
15 PhabricatorPolicyCapability::CAN_VIEW,
16 PhabricatorPolicyCapability::CAN_EDIT,
17 ))
18 ->executeOne();
19 if (!$operation) {
20 return new Aphront404Response();
21 }
22
23 $object_phid = $operation->getObjectPHID();
24 $handles = $viewer->loadHandles(array($object_phid));
25 $done_uri = $handles[$object_phid]->getURI();
26
27 if ($operation->getIsDismissed()) {
28 return $this->newDialog()
29 ->setTitle(pht('Already Dismissed'))
30 ->appendParagraph(
31 pht(
32 'This operation has already been dismissed, and can not be '.
33 'dismissed any further.'))
34 ->addCancelButton($done_uri);
35 }
36
37
38 if ($request->isFormPost()) {
39 $operation
40 ->setIsDismissed(1)
41 ->save();
42
43 return id(new AphrontRedirectResponse())->setURI($done_uri);
44 }
45
46 return $this->newDialog()
47 ->setTitle(pht('Dismiss Operation'))
48 ->appendParagraph(
49 pht(
50 'Dismiss this operation? It will no longer be shown, but logs '.
51 'can be found in Drydock.'))
52 ->addSubmitButton(pht('Dismiss'))
53 ->addCancelButton($done_uri);
54 }
55
56}