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

Add award and revoke conduit calls to Badges

Summary: Allow people to award and remove badges via conduit, but not from the standard badges form.

Test Plan:
Build a generator and generate awards. Didn't test the revoke yet.

{F3857766}

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T12270

Differential Revision: https://secure.phabricator.com/D17482

+55
+2
src/__phutil_library_map__.php
··· 2018 2018 'PhabricatorBadgesAward' => 'applications/badges/storage/PhabricatorBadgesAward.php', 2019 2019 'PhabricatorBadgesAwardController' => 'applications/badges/controller/PhabricatorBadgesAwardController.php', 2020 2020 'PhabricatorBadgesAwardQuery' => 'applications/badges/query/PhabricatorBadgesAwardQuery.php', 2021 + 'PhabricatorBadgesAwardTestDataGenerator' => 'applications/badges/lipsum/PhabricatorBadgesAwardTestDataGenerator.php', 2021 2022 'PhabricatorBadgesBadge' => 'applications/badges/storage/PhabricatorBadgesBadge.php', 2022 2023 'PhabricatorBadgesBadgeAwardTransaction' => 'applications/badges/xaction/PhabricatorBadgesBadgeAwardTransaction.php', 2023 2024 'PhabricatorBadgesBadgeDescriptionTransaction' => 'applications/badges/xaction/PhabricatorBadgesBadgeDescriptionTransaction.php', ··· 7000 7001 ), 7001 7002 'PhabricatorBadgesAwardController' => 'PhabricatorBadgesController', 7002 7003 'PhabricatorBadgesAwardQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 7004 + 'PhabricatorBadgesAwardTestDataGenerator' => 'PhabricatorTestDataGenerator', 7003 7005 'PhabricatorBadgesBadge' => array( 7004 7006 'PhabricatorBadgesDAO', 7005 7007 'PhabricatorPolicyInterface',
+17
src/applications/badges/editor/PhabricatorBadgesEditEngine.php
··· 124 124 ->setTransactionType( 125 125 PhabricatorBadgesBadgeDescriptionTransaction::TRANSACTIONTYPE) 126 126 ->setValue($object->getDescription()), 127 + id(new PhabricatorUsersEditField()) 128 + ->setKey('award') 129 + ->setIsConduitOnly(true) 130 + ->setDescription(pht('New badge award recipients.')) 131 + ->setConduitTypeDescription(pht('New badge award recipients.')) 132 + ->setTransactionType( 133 + PhabricatorBadgesBadgeAwardTransaction::TRANSACTIONTYPE) 134 + ->setLabel(pht('Award Recipients')), 135 + id(new PhabricatorUsersEditField()) 136 + ->setKey('revoke') 137 + ->setIsConduitOnly(true) 138 + ->setDescription(pht('Revoke badge award recipients.')) 139 + ->setConduitTypeDescription(pht('Revoke badge award recipients.')) 140 + ->setTransactionType( 141 + PhabricatorBadgesBadgeRevokeTransaction::TRANSACTIONTYPE) 142 + ->setLabel(pht('Revoke Recipients')), 143 + 127 144 ); 128 145 } 129 146
+36
src/applications/badges/lipsum/PhabricatorBadgesAwardTestDataGenerator.php
··· 1 + <?php 2 + 3 + final class PhabricatorBadgesAwardTestDataGenerator 4 + extends PhabricatorTestDataGenerator { 5 + 6 + const GENERATORKEY = 'badges.award'; 7 + 8 + public function getGeneratorName() { 9 + return pht('Badges Award'); 10 + } 11 + 12 + public function generateObject() { 13 + $author = $this->loadRandomUser(); 14 + $recipient = $this->loadRandomUser(); 15 + $badge_phid = $this->loadRandomPHID(new PhabricatorBadgesBadge()); 16 + 17 + $xactions = array(); 18 + 19 + $xactions[] = array( 20 + 'type' => 'award', 21 + 'value' => array($recipient->getPHID()), 22 + ); 23 + 24 + $params = array( 25 + 'transactions' => $xactions, 26 + 'objectIdentifier' => $badge_phid, 27 + ); 28 + 29 + $result = id(new ConduitCall('badges.edit', $params)) 30 + ->setUser($author) 31 + ->execute(); 32 + 33 + return $result['object']['phid']; 34 + } 35 + 36 + }