Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / badges / controller / PhabricatorBadgesEditRecipientsController.php
blobce437f1a5dfee3cc6dc43a9ee23d1afbae11c794
1 <?php
3 final class PhabricatorBadgesEditRecipientsController
4 extends PhabricatorBadgesController {
6 public function handleRequest(AphrontRequest $request) {
7 $viewer = $request->getViewer();
8 $id = $request->getURIData('id');
9 $xactions = array();
11 $badge = id(new PhabricatorBadgesQuery())
12 ->setViewer($viewer)
13 ->withIDs(array($id))
14 ->requireCapabilities(
15 array(
16 PhabricatorPolicyCapability::CAN_EDIT,
17 PhabricatorPolicyCapability::CAN_VIEW,
19 ->executeOne();
20 if (!$badge) {
21 return new Aphront404Response();
24 $view_uri = $this->getApplicationURI('recipients/'.$badge->getID().'/');
26 if ($request->isFormPost()) {
27 $award_phids = array();
29 $add_recipients = $request->getArr('phids');
30 if ($add_recipients) {
31 foreach ($add_recipients as $phid) {
32 $award_phids[] = $phid;
36 $xactions[] = id(new PhabricatorBadgesTransaction())
37 ->setTransactionType(
38 PhabricatorBadgesBadgeAwardTransaction::TRANSACTIONTYPE)
39 ->setNewValue($award_phids);
41 $editor = id(new PhabricatorBadgesEditor())
42 ->setActor($viewer)
43 ->setContentSourceFromRequest($request)
44 ->setContinueOnNoEffect(true)
45 ->setContinueOnMissingFields(true)
46 ->applyTransactions($badge, $xactions);
48 return id(new AphrontRedirectResponse())
49 ->setURI($view_uri);
52 $can_edit = PhabricatorPolicyFilter::hasCapability(
53 $viewer,
54 $badge,
55 PhabricatorPolicyCapability::CAN_EDIT);
57 $form_box = null;
58 $title = pht('Add Recipient');
59 if ($can_edit) {
60 $header_name = pht('Edit Recipients');
62 $form = new AphrontFormView();
63 $form
64 ->setUser($viewer)
65 ->setFullWidth(true)
66 ->appendControl(
67 id(new AphrontFormTokenizerControl())
68 ->setName('phids')
69 ->setLabel(pht('Recipients'))
70 ->setDatasource(new PhabricatorPeopleDatasource()));
73 $dialog = id(new AphrontDialogView())
74 ->setUser($viewer)
75 ->setTitle(pht('Add Recipients'))
76 ->appendForm($form)
77 ->addCancelButton($view_uri)
78 ->addSubmitButton(pht('Add Recipients'));
80 return $dialog;