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

Adding awarder info to badge cards displayed on user profile pages

Summary: Ref T8940

Test Plan: Award badge, open recipient profile page, badge should appear in badges list, and flipping the badge card should show who awarded it.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: chad, Korvin

Maniphest Tasks: T8940

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

+32 -10
+32 -10
src/applications/people/controller/PhabricatorPeopleProfileViewController.php
··· 181 181 return null; 182 182 } 183 183 184 - $badge_phids = $user->getBadgePHIDs(); 185 - if ($badge_phids) { 184 + $awards = array(); 185 + $badges = array(); 186 + if ($user->getBadgePHIDs()) { 187 + $awards = id(new PhabricatorBadgesAwardQuery()) 188 + ->setViewer($viewer) 189 + ->withRecipientPHIDs(array($user->getPHID())) 190 + ->execute(); 191 + $awards = mpull($awards, null, 'getBadgePHID'); 192 + 193 + $badge_phids = mpull($awards, 'getBadgePHID'); 186 194 $badges = id(new PhabricatorBadgesQuery()) 187 195 ->setViewer($viewer) 188 196 ->withPHIDs($badge_phids) 189 197 ->withStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE)) 190 198 ->execute(); 191 - } else { 192 - $badges = array(); 199 + $badges = mpull($badges, null, 'getPHID'); 193 200 } 194 201 195 202 if (count($badges)) { 196 203 $flex = new PHUIBadgeBoxView(); 204 + 197 205 foreach ($badges as $badge) { 198 - $item = id(new PHUIBadgeView()) 199 - ->setIcon($badge->getIcon()) 200 - ->setHeader($badge->getName()) 201 - ->setSubhead($badge->getFlavor()) 202 - ->setQuality($badge->getQuality()); 203 - $flex->addItem($item); 206 + if ($badge) { 207 + $awarder_info = array(); 208 + 209 + $award = idx($awards, $badge->getPHID(), null); 210 + $awarder_phid = $award->getAwarderPHID(); 211 + $awarder_handle = $viewer->renderHandle($awarder_phid); 212 + 213 + $awarder_info = pht( 214 + 'Awarded by %s', 215 + $awarder_handle->render()); 216 + 217 + $item = id(new PHUIBadgeView()) 218 + ->setIcon($badge->getIcon()) 219 + ->setHeader($badge->getName()) 220 + ->setSubhead($badge->getFlavor()) 221 + ->setQuality($badge->getQuality()) 222 + ->addByLine($awarder_info); 223 + 224 + $flex->addItem($item); 225 + } 204 226 } 205 227 } else { 206 228 $error = id(new PHUIBoxView())