@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
fork

Configure Feed

Select the types of activity you want to include in your feed.

at upstream/main 84 lines 2.4 kB view raw
1<?php 2 3final class PhabricatorBadgesAwardController 4 extends PhabricatorBadgesController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $request->getViewer(); 8 $id = $request->getURIData('id'); 9 $errors = array(); 10 $e_badge = true; 11 12 $user = id(new PhabricatorPeopleQuery()) 13 ->setViewer($viewer) 14 ->withIDs(array($id)) 15 ->executeOne(); 16 if (!$user) { 17 return new Aphront404Response(); 18 } 19 20 $view_uri = '/people/badges/'.$user->getID().'/'; 21 22 if ($request->isFormPost()) { 23 $badge_phids = $request->getArr('badgePHIDs'); 24 25 if (empty($badge_phids)) { 26 $errors[] = pht('Badge name is required.'); 27 $e_badge = pht('Required'); 28 } 29 if (!$errors) { 30 $badges = id(new PhabricatorBadgesQuery()) 31 ->setViewer($viewer) 32 ->withPHIDs($badge_phids) 33 ->requireCapabilities( 34 array( 35 PhabricatorPolicyCapability::CAN_EDIT, 36 PhabricatorPolicyCapability::CAN_VIEW, 37 )) 38 ->execute(); 39 $award_phids = array($user->getPHID()); 40 41 foreach ($badges as $badge) { 42 $xactions = array(); 43 $xactions[] = id(new PhabricatorBadgesTransaction()) 44 ->setTransactionType( 45 PhabricatorBadgesBadgeAwardTransaction::TRANSACTIONTYPE) 46 ->setNewValue($award_phids); 47 48 $editor = id(new PhabricatorBadgesEditor()) 49 ->setActor($viewer) 50 ->setContentSourceFromRequest($request) 51 ->setContinueOnNoEffect(true) 52 ->setContinueOnMissingFields(true) 53 ->applyTransactions($badge, $xactions); 54 } 55 56 return id(new AphrontRedirectResponse()) 57 ->setURI($view_uri); 58 } 59 } 60 61 $form = id(new AphrontFormView()) 62 ->setUser($viewer) 63 ->appendControl( 64 id(new AphrontFormTokenizerControl()) 65 ->setLabel(pht('Badge')) 66 ->setName('badgePHIDs') 67 ->setError($e_badge) 68 ->setDatasource( 69 id(new PhabricatorBadgesDatasource()) 70 ->setParameters( 71 array( 72 'recipientPHID' => $user->getPHID(), 73 )))); 74 75 $dialog = $this->newDialog() 76 ->setTitle(pht('Award Badge')) 77 ->appendForm($form) 78 ->addCancelButton($view_uri) 79 ->addSubmitButton(pht('Award')); 80 81 return $dialog; 82 } 83 84}