Path: blob/master/src/applications/badges/controller/PhabricatorBadgesEditRecipientsController.php
12256 views
<?php12final class PhabricatorBadgesEditRecipientsController3extends PhabricatorBadgesController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();7$id = $request->getURIData('id');8$xactions = array();910$badge = id(new PhabricatorBadgesQuery())11->setViewer($viewer)12->withIDs(array($id))13->requireCapabilities(14array(15PhabricatorPolicyCapability::CAN_EDIT,16PhabricatorPolicyCapability::CAN_VIEW,17))18->executeOne();19if (!$badge) {20return new Aphront404Response();21}2223$view_uri = $this->getApplicationURI('recipients/'.$badge->getID().'/');2425if ($request->isFormPost()) {26$award_phids = array();2728$add_recipients = $request->getArr('phids');29if ($add_recipients) {30foreach ($add_recipients as $phid) {31$award_phids[] = $phid;32}33}3435$xactions[] = id(new PhabricatorBadgesTransaction())36->setTransactionType(37PhabricatorBadgesBadgeAwardTransaction::TRANSACTIONTYPE)38->setNewValue($award_phids);3940$editor = id(new PhabricatorBadgesEditor())41->setActor($viewer)42->setContentSourceFromRequest($request)43->setContinueOnNoEffect(true)44->setContinueOnMissingFields(true)45->applyTransactions($badge, $xactions);4647return id(new AphrontRedirectResponse())48->setURI($view_uri);49}5051$can_edit = PhabricatorPolicyFilter::hasCapability(52$viewer,53$badge,54PhabricatorPolicyCapability::CAN_EDIT);5556$form_box = null;57$title = pht('Add Recipient');58if ($can_edit) {59$header_name = pht('Edit Recipients');6061$form = new AphrontFormView();62$form63->setUser($viewer)64->setFullWidth(true)65->appendControl(66id(new AphrontFormTokenizerControl())67->setName('phids')68->setLabel(pht('Recipients'))69->setDatasource(new PhabricatorPeopleDatasource()));70}7172$dialog = id(new AphrontDialogView())73->setUser($viewer)74->setTitle(pht('Add Recipients'))75->appendForm($form)76->addCancelButton($view_uri)77->addSubmitButton(pht('Add Recipients'));7879return $dialog;80}8182}838485