Page MenuHomePhabricator

D17499.id42079.diff
No OneTemporary

D17499.id42079.diff

diff --git a/src/applications/badges/query/PhabricatorBadgesAwardQuery.php b/src/applications/badges/query/PhabricatorBadgesAwardQuery.php
--- a/src/applications/badges/query/PhabricatorBadgesAwardQuery.php
+++ b/src/applications/badges/query/PhabricatorBadgesAwardQuery.php
@@ -6,7 +6,7 @@
private $badgePHIDs;
private $recipientPHIDs;
private $awarderPHIDs;
-
+ private $badgeStatuses;
protected function willFilterPage(array $awards) {
$badge_phids = array();
@@ -14,18 +14,26 @@
$badge_phids[] = $award->getBadgePHID();
}
- $badges = id(new PhabricatorBadgesQuery())
+ $badge_query = id(new PhabricatorBadgesQuery())
->setViewer($this->getViewer())
- ->withPHIDs($badge_phids)
- ->execute();
+ ->withPHIDs($badge_phids);
+
+ if ($this->badgeStatuses !== null) {
+ $badge_query->withStatuses($this->badgeStatuses);
+ }
+ $badges = $badge_query->execute();
$badges = mpull($badges, null, 'getPHID');
+ $results = array();
foreach ($awards as $key => $award) {
$award_badge = idx($badges, $award->getBadgePHID());
- $award->attachBadge($award_badge);
+ if ($award_badge) {
+ $award->attachBadge($award_badge);
+ $results[] = $award;
+ }
}
- return $awards;
+ return $results;
}
public function withBadgePHIDs(array $phids) {
@@ -43,6 +51,11 @@
return $this;
}
+ public function withBadgeStatuses(array $statuses) {
+ $this->badgeStatuses = $statuses;
+ return $this;
+ }
+
protected function loadPage() {
return $this->loadStandardPage($this->newResultObject());
}
diff --git a/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php b/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
--- a/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
@@ -84,15 +84,14 @@
$awards = id(new PhabricatorBadgesAwardQuery())
->setViewer($viewer)
->withRecipientPHIDs(array($user->getPHID()))
+ ->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))
->execute();
$awards = mpull($awards, null, 'getBadgePHID');
$badges = array();
foreach ($awards as $award) {
$badge = $award->getBadge();
- if ($badge->getStatus() == PhabricatorBadgesBadge::STATUS_ACTIVE) {
- $badges[$award->getBadgePHID()] = $badge;
- }
+ $badges[$award->getBadgePHID()] = $badge;
}
if (count($badges)) {
diff --git a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
--- a/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
+++ b/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
@@ -528,12 +528,18 @@
$awards = id(new PhabricatorBadgesAwardQuery())
->setViewer($this->getUser())
->withRecipientPHIDs(array($user->getPHID()))
- ->setLimit(2)
+ ->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))
->execute();
+ $badges = array();
+ foreach ($awards as $award) {
+ $badge = $award->getBadge();
+ $badges[$award->getBadgePHID()] = $badge;
+ }
+
$badge_view = null;
- if ($awards) {
- $badges = mpull($awards, 'getBadge');
+ if ($badges) {
+ $badges = array_slice($badges, 0, 2);
$badge_list = array();
foreach ($badges as $badge) {
$badge_view = id(new PHUIBadgeMiniView())
diff --git a/src/view/phui/PHUITimelineView.php b/src/view/phui/PHUITimelineView.php
--- a/src/view/phui/PHUITimelineView.php
+++ b/src/view/phui/PHUITimelineView.php
@@ -248,6 +248,7 @@
$awards = id(new PhabricatorBadgesAwardQuery())
->setViewer($this->getViewer())
->withRecipientPHIDs($user_phids)
+ ->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))
->execute();
$awards = mgroup($awards, 'getRecipientPHID');
@@ -259,9 +260,7 @@
$badges = array();
foreach ($author_awards as $award) {
$badge = $award->getBadge();
- if ($badge->getStatus() == PhabricatorBadgesBadge::STATUS_ACTIVE) {
- $badges[$award->getBadgePHID()] = $badge;
- }
+ $badges[$award->getBadgePHID()] = $badge;
}
// TODO: Pick the "best" badges in some smart way. For now, just pick

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 10:47 AM (4 d, 10 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7709690
Default Alt Text
D17499.id42079.diff (4 KB)

Event Timeline