Path: blob/master/src/applications/people/controller/PhabricatorPeopleProfileBadgesController.php
12262 views
<?php12final class PhabricatorPeopleProfileBadgesController3extends PhabricatorPeopleProfileController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();7$id = $request->getURIData('id');89$user = id(new PhabricatorPeopleQuery())10->setViewer($viewer)11->withIDs(array($id))12->needProfileImage(true)13->executeOne();14if (!$user) {15return new Aphront404Response();16}1718$class = 'PhabricatorBadgesApplication';19if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {20return new Aphront404Response();21}2223$this->setUser($user);24$title = array(pht('Badges'), $user->getUsername());25$header = $this->buildProfileHeader();26$badges = $this->buildBadgesView($user);2728$crumbs = $this->buildApplicationCrumbs();29$crumbs->addTextCrumb(pht('Badges'));30$crumbs->setBorder(true);3132$nav = $this->newNavigation(33$user,34PhabricatorPeopleProfileMenuEngine::ITEM_BADGES);3536$button = id(new PHUIButtonView())37->setTag('a')38->setIcon('fa-plus')39->setText(pht('Award Badge'))40->setWorkflow(true)41->setHref('/badges/award/'.$user->getID().'/');4243$header->addActionLink($button);4445$view = id(new PHUITwoColumnView())46->setHeader($header)47->addClass('project-view-home')48->addClass('project-view-people-home')49->setFooter(50array(51$badges,52));5354return $this->newPage()55->setTitle($title)56->setCrumbs($crumbs)57->setNavigation($nav)58->appendChild($view);59}6061private function buildBadgesView(PhabricatorUser $user) {62$viewer = $this->getViewer();63$request = $this->getRequest();6465$pager = id(new AphrontCursorPagerView())66->readFromRequest($request);6768$query = id(new PhabricatorBadgesAwardQuery())69->setViewer($viewer)70->withRecipientPHIDs(array($user->getPHID()))71->withBadgeStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE));7273$awards = $query->executeWithCursorPager($pager);7475if ($awards) {76$flex = new PHUIBadgeBoxView();77foreach ($awards as $award) {78$badge = $award->getBadge();7980$awarder_info = array();8182$awarder_phid = $award->getAwarderPHID();83$awarder_handle = $viewer->renderHandle($awarder_phid);84$awarded_date = phabricator_date($award->getDateCreated(), $viewer);8586$awarder_info = pht(87'Awarded by %s',88$awarder_handle->render());8990$item = id(new PHUIBadgeView())91->setIcon($badge->getIcon())92->setHeader($badge->getName())93->setSubhead($badge->getFlavor())94->setQuality($badge->getQuality())95->setHref($badge->getViewURI())96->addByLine($awarder_info)97->addByLine($awarded_date);9899$flex->addItem($item);100}101} else {102$flex = id(new PHUIInfoView())103->setSeverity(PHUIInfoView::SEVERITY_NOTICE)104->appendChild(pht('User has not been awarded any badges.'));105}106107return array(108$flex,109$pager,110);111}112}113114115