Differential D17448 Diff 41962 src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
<?php | <?php | ||||
final class PhabricatorPeopleProfileBadgesController | final class PhabricatorPeopleProfileBadgesController | ||||
extends PhabricatorPeopleProfileController { | extends PhabricatorPeopleProfileController { | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$id = $request->getURIData('id'); | $id = $request->getURIData('id'); | ||||
$user = id(new PhabricatorPeopleQuery()) | $user = id(new PhabricatorPeopleQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withIDs(array($id)) | ->withIDs(array($id)) | ||||
->needProfile(true) | ->needProfile(true) | ||||
->needProfileImage(true) | ->needProfileImage(true) | ||||
->needAvailability(true) | ->needAvailability(true) | ||||
->needBadges(true) | |||||
->requireCapabilities( | ->requireCapabilities( | ||||
array( | array( | ||||
PhabricatorPolicyCapability::CAN_VIEW, | PhabricatorPolicyCapability::CAN_VIEW, | ||||
)) | )) | ||||
->executeOne(); | ->executeOne(); | ||||
if (!$user) { | if (!$user) { | ||||
return new Aphront404Response(); | return new Aphront404Response(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | return $this->newPage() | ||||
->setCrumbs($crumbs) | ->setCrumbs($crumbs) | ||||
->setNavigation($nav) | ->setNavigation($nav) | ||||
->appendChild($view); | ->appendChild($view); | ||||
} | } | ||||
private function buildBadgesView(PhabricatorUser $user) { | private function buildBadgesView(PhabricatorUser $user) { | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$awards = array(); | |||||
$badges = array(); | |||||
if ($user->getBadgePHIDs()) { | |||||
$awards = id(new PhabricatorBadgesAwardQuery()) | $awards = id(new PhabricatorBadgesAwardQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->withRecipientPHIDs(array($user->getPHID())) | ->withRecipientPHIDs(array($user->getPHID())) | ||||
->execute(); | ->execute(); | ||||
$awards = mpull($awards, null, 'getBadgePHID'); | $awards = mpull($awards, null, 'getBadgePHID'); | ||||
$badges = array(); | $badges = array(); | ||||
foreach ($awards as $award) { | foreach ($awards as $award) { | ||||
$badge = $award->getBadge(); | $badge = $award->getBadge(); | ||||
if ($badge->getStatus() == PhabricatorBadgesBadge::STATUS_ACTIVE) { | if ($badge->getStatus() == PhabricatorBadgesBadge::STATUS_ACTIVE) { | ||||
$badges[$award->getBadgePHID()] = $badge; | $badges[$award->getBadgePHID()] = $badge; | ||||
} | } | ||||
} | } | ||||
} | |||||
if (count($badges)) { | if (count($badges)) { | ||||
$flex = new PHUIBadgeBoxView(); | $flex = new PHUIBadgeBoxView(); | ||||
foreach ($badges as $badge) { | foreach ($badges as $badge) { | ||||
if ($badge) { | if ($badge) { | ||||
$awarder_info = array(); | $awarder_info = array(); | ||||
Show All 28 Lines |