private function buildBadgesView(PhabricatorUser $user)
 {
     $viewer = $this->getViewer();
     $class = 'PhabricatorBadgesApplication';
     $box = null;
     if (PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
         $badge_phids = $user->getBadgePHIDs();
         if ($badge_phids) {
             $badges = id(new PhabricatorBadgesQuery())->setViewer($viewer)->withPHIDs($badge_phids)->withStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))->execute();
             $flex = new PHUIBadgeBoxView();
             foreach ($badges as $badge) {
                 $item = id(new PHUIBadgeView())->setIcon($badge->getIcon())->setHeader($badge->getName())->setSubhead($badge->getFlavor())->setQuality($badge->getQuality());
                 $flex->addItem($item);
             }
             $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Badges'))->appendChild($flex)->setBackground(PHUIBoxView::GREY);
         }
     }
     return $box;
 }
 private function buildBadgesView(PhabricatorUser $user)
 {
     $viewer = $this->getViewer();
     $class = 'PhabricatorBadgesApplication';
     if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
         return null;
     }
     $awards = array();
     $badges = array();
     if ($user->getBadgePHIDs()) {
         $awards = id(new PhabricatorBadgesAwardQuery())->setViewer($viewer)->withRecipientPHIDs(array($user->getPHID()))->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;
             }
         }
     }
     if (count($badges)) {
         $flex = new PHUIBadgeBoxView();
         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);
                 $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);
                 $flex->addItem($item);
             }
         }
     } else {
         $error = id(new PHUIBoxView())->addClass('mlb')->appendChild(pht('User does not have any badges.'));
         $flex = id(new PHUIInfoView())->setSeverity(PHUIInfoView::SEVERITY_NODATA)->appendChild($error);
     }
     // Best option?
     $badges = id(new PhabricatorBadgesQuery())->setViewer($viewer)->withStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))->requireCapabilities(array(PhabricatorPolicyCapability::CAN_VIEW, PhabricatorPolicyCapability::CAN_EDIT))->execute();
     $button = id(new PHUIButtonView())->setTag('a')->setIcon('fa-plus')->setText(pht('Award'))->setWorkflow(true)->setHref('/badges/award/' . $user->getID() . '/');
     $can_award = false;
     if (count($badges)) {
         $can_award = true;
     }
     $header = id(new PHUIHeaderView())->setHeader(pht('Badges'));
     if (count($badges)) {
         $header->addActionLink($button);
     }
     $box = id(new PHUIObjectBoxView())->setHeader($header)->addClass('project-view-badges')->appendChild($flex)->setBackground(PHUIObjectBoxView::GREY);
     return $box;
 }
 private function buildBadgesView(PhabricatorUser $user)
 {
     $viewer = $this->getViewer();
     $class = 'PhabricatorBadgesApplication';
     if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) {
         return null;
     }
     $badge_phids = $user->getBadgePHIDs();
     if ($badge_phids) {
         $badges = id(new PhabricatorBadgesQuery())->setViewer($viewer)->withPHIDs($badge_phids)->withStatuses(array(PhabricatorBadgesBadge::STATUS_ACTIVE))->execute();
         $flex = new PHUIBadgeBoxView();
         foreach ($badges as $badge) {
             $item = id(new PHUIBadgeView())->setIcon($badge->getIcon())->setHeader($badge->getName())->setSubhead($badge->getFlavor())->setQuality($badge->getQuality());
             $flex->addItem($item);
         }
     } else {
         $error = id(new PHUIBoxView())->addClass('mlb')->appendChild(pht('User does not have any badges.'));
         $flex = id(new PHUIInfoView())->setSeverity(PHUIInfoView::SEVERITY_NODATA)->appendChild($error);
     }
     $box = id(new PHUIObjectBoxView())->setHeaderText(pht('Badges'))->addClass('project-view-badges')->appendChild($flex)->setBackground(PHUIObjectBoxView::GREY);
     return $box;
 }