Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php b/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
index e96ed4a89e..f3e95eeb66 100644
--- a/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
+++ b/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
@@ -1,133 +1,127 @@
<?php
final class PhabricatorPeopleProfileBadgesController
extends PhabricatorPeopleProfileController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
$id = $request->getURIData('id');
$user = id(new PhabricatorPeopleQuery())
->setViewer($viewer)
->withIDs(array($id))
- ->needProfile(true)
->needProfileImage(true)
- ->needAvailability(true)
- ->requireCapabilities(
- array(
- PhabricatorPolicyCapability::CAN_VIEW,
- ))
->executeOne();
if (!$user) {
return new Aphront404Response();
}
$class = 'PhabricatorBadgesApplication';
if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
return new Aphront404Response();
}
$this->setUser($user);
$title = array(pht('Badges'), $user->getUsername());
$header = $this->buildProfileHeader();
$badges = $this->buildBadgesView($user);
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('Badges'));
$crumbs->setBorder(true);
$nav = $this->getProfileMenu();
$nav->selectFilter(PhabricatorPeopleProfileMenuEngine::ITEM_BADGES);
// Best option?
$badges = id(new PhabricatorBadgesQuery())
->setViewer($viewer)
->withStatuses(array(
PhabricatorBadgesBadge::STATUS_ACTIVE,
))
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
+ ->setLimit(1)
->execute();
$button = id(new PHUIButtonView())
->setTag('a')
->setIcon('fa-plus')
->setText(pht('Award Badge'))
->setWorkflow(true)
->setHref('/badges/award/'.$user->getID().'/');
- if (count($badges)) {
+ if ($badges) {
$header->addActionLink($button);
}
$view = id(new PHUITwoColumnView())
->setHeader($header)
->addClass('project-view-home')
->addClass('project-view-people-home')
->setFooter(array(
$this->buildBadgesView($user)
));
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->setNavigation($nav)
->appendChild($view);
}
private function buildBadgesView(PhabricatorUser $user) {
$viewer = $this->getViewer();
+ $request = $this->getRequest();
+
+ $pager = id(new AphrontCursorPagerView())
+ ->readFromRequest($request);
- $awards = id(new PhabricatorBadgesAwardQuery())
+ $query = id(new PhabricatorBadgesAwardQuery())
->setViewer($viewer)
->withRecipientPHIDs(array($user->getPHID()))
- ->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))
- ->execute();
- $awards = mpull($awards, null, 'getBadgePHID');
+ ->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE));
- $badges = array();
- foreach ($awards as $award) {
- $badge = $award->getBadge();
- $badges[$award->getBadgePHID()] = $badge;
- }
+ $awards = $query->executeWithCursorPager($pager);
- if (count($badges)) {
+ if ($awards) {
$flex = new PHUIBadgeBoxView();
+ foreach ($awards as $award) {
+ $badge = $award->getBadge();
+
+ $awarder_info = array();
+
+ $awarder_phid = $award->getAwarderPHID();
+ $awarder_handle = $viewer->renderHandle($awarder_phid);
+ $awarded_date = phabricator_date($award->getDateCreated(), $viewer);
+
+ $awarder_info = pht(
+ 'Awarded by %s',
+ $awarder_handle->render());
+
+ $item = id(new PHUIBadgeView())
+ ->setIcon($badge->getIcon())
+ ->setHeader($badge->getName())
+ ->setSubhead($badge->getFlavor())
+ ->setQuality($badge->getQuality())
+ ->setHref($badge->getViewURI())
+ ->addByLine($awarder_info)
+ ->addByLine($awarded_date);
- foreach ($badges as $badge) {
- if ($badge) {
- $awarder_info = array();
-
- $award = idx($awards, $badge->getPHID(), null);
- $awarder_phid = $award->getAwarderPHID();
- $awarder_handle = $viewer->renderHandle($awarder_phid);
- $awarded_date = phabricator_date($award->getDateCreated(), $viewer);
-
- $awarder_info = pht(
- 'Awarded by %s',
- $awarder_handle->render());
-
- $item = id(new PHUIBadgeView())
- ->setIcon($badge->getIcon())
- ->setHeader($badge->getName())
- ->setSubhead($badge->getFlavor())
- ->setQuality($badge->getQuality())
- ->setHref($badge->getViewURI())
- ->addByLine($awarder_info)
- ->addByLine($awarded_date);
-
- $flex->addItem($item);
- }
+ $flex->addItem($item);
}
} else {
$flex = id(new PHUIInfoView())
->setSeverity(PHUIInfoView::SEVERITY_NOTICE)
->appendChild(pht('User has not been awarded any badges.'));
}
- return $flex;
+ return array(
+ $flex,
+ $pager,
+ );
}
}

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jul 28, 8:31 AM (1 w, 21 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
186585
Default Alt Text
(5 KB)

Event Timeline