Changeset View
Changeset View
Standalone View
Standalone View
src/view/phui/PHUITimelineView.php
Show First 20 Lines • Show All 237 Lines • ▼ Show 20 Lines | foreach ($events as $key => $event) { | ||||
$user_phids[$author_phid] = $author_phid; | $user_phids[$author_phid] = $author_phid; | ||||
} | } | ||||
if (!$user_phids) { | if (!$user_phids) { | ||||
return; | return; | ||||
} | } | ||||
$users = id(new PhabricatorPeopleQuery()) | |||||
$awards = id(new PhabricatorBadgesAwardQuery()) | ->setViewer($viewer) | ||||
->setViewer($this->getViewer()) | ->withPHIDs($user_phids) | ||||
->withRecipientPHIDs($user_phids) | ->needBadgeAwards(true) | ||||
->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE)) | |||||
->execute(); | ->execute(); | ||||
$users = mpull($users, null, 'getPHID'); | |||||
$awards = mgroup($awards, 'getRecipientPHID'); | |||||
foreach ($events as $event) { | foreach ($events as $event) { | ||||
$user_phid = $event->getAuthorPHID(); | |||||
$author_awards = idx($awards, $event->getAuthorPHID(), array()); | $badges = $users[$user_phid]->getRecentBadgeAwards(); | ||||
epriestley: It's possible that `$users[$user_phid]` will not exist. For example:
- Write a comment as… | |||||
$badges = array(); | |||||
foreach ($author_awards as $award) { | |||||
$badge = $award->getBadge(); | |||||
$badges[$award->getBadgePHID()] = $badge; | |||||
} | |||||
// TODO: Pick the "best" badges in some smart way. For now, just pick | |||||
// the first two. | |||||
$badges = array_slice($badges, 0, 2); | |||||
foreach ($badges as $badge) { | foreach ($badges as $badge) { | ||||
$badge_view = id(new PHUIBadgeMiniView()) | $badge_view = id(new PHUIBadgeMiniView()) | ||||
->setIcon($badge->getIcon()) | ->setIcon($badge['icon']) | ||||
->setQuality($badge->getQuality()) | ->setQuality($badge['quality']) | ||||
->setHeader($badge->getName()) | ->setHeader($badge['name']) | ||||
->setTipDirection('E') | ->setTipDirection('E') | ||||
->setHref('/badges/view/'.$badge->getID()); | ->setHref('/badges/view/'.$badge['id'].'/'); | ||||
$event->addBadge($badge_view); | $event->addBadge($badge_view); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } |
It's possible that $users[$user_phid] will not exist. For example:
We should just skip the user in this case, not fatal.