Path: blob/master/src/applications/badges/query/PhabricatorBadgesSearchEngine.php
12256 views
<?php12final class PhabricatorBadgesSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Badges');7}89public function getApplicationClassName() {10return 'PhabricatorBadgesApplication';11}1213public function newQuery() {14return new PhabricatorBadgesQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorSearchTextField())20->setLabel(pht('Name Contains'))21->setKey('name')22->setDescription(pht('Search for badges by name substring.')),23id(new PhabricatorSearchCheckboxesField())24->setKey('qualities')25->setLabel(pht('Quality'))26->setEnableForConduit(false)27->setOptions(PhabricatorBadgesQuality::getDropdownQualityMap()),28id(new PhabricatorSearchCheckboxesField())29->setKey('statuses')30->setLabel(pht('Status'))31->setOptions(32id(new PhabricatorBadgesBadge())33->getStatusNameMap()),34);35}3637protected function buildQueryFromParameters(array $map) {38$query = $this->newQuery();3940if ($map['statuses']) {41$query->withStatuses($map['statuses']);42}4344if ($map['qualities']) {45$query->withQualities($map['qualities']);46}4748if ($map['name'] !== null) {49$query->withNameNgrams($map['name']);50}5152return $query;53}5455protected function getURI($path) {56return '/badges/'.$path;57}5859protected function getBuiltinQueryNames() {60$names = array();6162$names['open'] = pht('Active Badges');63$names['all'] = pht('All Badges');6465return $names;66}6768public function buildSavedQueryFromBuiltin($query_key) {69$query = $this->newSavedQuery();70$query->setQueryKey($query_key);7172switch ($query_key) {73case 'all':74return $query;75case 'open':76return $query->setParameter(77'statuses',78array(79PhabricatorBadgesBadge::STATUS_ACTIVE,80));81}8283return parent::buildSavedQueryFromBuiltin($query_key);84}8586protected function getRequiredHandlePHIDsForResultList(87array $badges,88PhabricatorSavedQuery $query) {8990$phids = array();9192return $phids;93}9495protected function renderResultList(96array $badges,97PhabricatorSavedQuery $query,98array $handles) {99assert_instances_of($badges, 'PhabricatorBadgesBadge');100101$viewer = $this->requireViewer();102103$list = id(new PHUIObjectItemListView());104foreach ($badges as $badge) {105$quality_name = PhabricatorBadgesQuality::getQualityName(106$badge->getQuality());107108$mini_badge = id(new PHUIBadgeMiniView())109->setHeader($badge->getName())110->setIcon($badge->getIcon())111->setQuality($badge->getQuality());112113$item = id(new PHUIObjectItemView())114->setHeader($badge->getName())115->setBadge($mini_badge)116->setHref('/badges/view/'.$badge->getID().'/')117->addAttribute($quality_name)118->addAttribute($badge->getFlavor());119120if ($badge->isArchived()) {121$item->setDisabled(true);122$item->addIcon('fa-ban', pht('Archived'));123}124125$list->addItem($item);126}127128$result = new PhabricatorApplicationSearchResultView();129$result->setObjectList($list);130$result->setNoDataString(pht('No badges found.'));131132return $result;133134}135136protected function getNewUserBody() {137$create_button = id(new PHUIButtonView())138->setTag('a')139->setText(pht('Create a Badge'))140->setHref('/badges/create/')141->setColor(PHUIButtonView::GREEN);142143$icon = $this->getApplication()->getIcon();144$app_name = $this->getApplication()->getName();145$view = id(new PHUIBigInfoView())146->setIcon($icon)147->setTitle(pht('Welcome to %s', $app_name))148->setDescription(149pht('Badges let you award and distinguish special users '.150'throughout your install.'))151->addAction($create_button);152153return $view;154}155156}157158159