Remove all "FileHasObject" edge reads and writes
[phabricator.git] / src / applications / badges / query / PhabricatorBadgesSearchEngine.php
blob6e84c30bc9f118c84bbecd7471be481ac720590d
1 <?php
3 final class PhabricatorBadgesSearchEngine
4 extends PhabricatorApplicationSearchEngine {
6 public function getResultTypeDescription() {
7 return pht('Badges');
10 public function getApplicationClassName() {
11 return 'PhabricatorBadgesApplication';
14 public function newQuery() {
15 return new PhabricatorBadgesQuery();
18 protected function buildCustomSearchFields() {
19 return array(
20 id(new PhabricatorSearchTextField())
21 ->setLabel(pht('Name Contains'))
22 ->setKey('name')
23 ->setDescription(pht('Search for badges by name substring.')),
24 id(new PhabricatorSearchCheckboxesField())
25 ->setKey('qualities')
26 ->setLabel(pht('Quality'))
27 ->setEnableForConduit(false)
28 ->setOptions(PhabricatorBadgesQuality::getDropdownQualityMap()),
29 id(new PhabricatorSearchCheckboxesField())
30 ->setKey('statuses')
31 ->setLabel(pht('Status'))
32 ->setOptions(
33 id(new PhabricatorBadgesBadge())
34 ->getStatusNameMap()),
38 protected function buildQueryFromParameters(array $map) {
39 $query = $this->newQuery();
41 if ($map['statuses']) {
42 $query->withStatuses($map['statuses']);
45 if ($map['qualities']) {
46 $query->withQualities($map['qualities']);
49 if ($map['name'] !== null) {
50 $query->withNameNgrams($map['name']);
53 return $query;
56 protected function getURI($path) {
57 return '/badges/'.$path;
60 protected function getBuiltinQueryNames() {
61 $names = array();
63 $names['open'] = pht('Active Badges');
64 $names['all'] = pht('All Badges');
66 return $names;
69 public function buildSavedQueryFromBuiltin($query_key) {
70 $query = $this->newSavedQuery();
71 $query->setQueryKey($query_key);
73 switch ($query_key) {
74 case 'all':
75 return $query;
76 case 'open':
77 return $query->setParameter(
78 'statuses',
79 array(
80 PhabricatorBadgesBadge::STATUS_ACTIVE,
81 ));
84 return parent::buildSavedQueryFromBuiltin($query_key);
87 protected function getRequiredHandlePHIDsForResultList(
88 array $badges,
89 PhabricatorSavedQuery $query) {
91 $phids = array();
93 return $phids;
96 protected function renderResultList(
97 array $badges,
98 PhabricatorSavedQuery $query,
99 array $handles) {
100 assert_instances_of($badges, 'PhabricatorBadgesBadge');
102 $viewer = $this->requireViewer();
104 $list = id(new PHUIObjectItemListView());
105 foreach ($badges as $badge) {
106 $quality_name = PhabricatorBadgesQuality::getQualityName(
107 $badge->getQuality());
109 $mini_badge = id(new PHUIBadgeMiniView())
110 ->setHeader($badge->getName())
111 ->setIcon($badge->getIcon())
112 ->setQuality($badge->getQuality());
114 $item = id(new PHUIObjectItemView())
115 ->setHeader($badge->getName())
116 ->setBadge($mini_badge)
117 ->setHref('/badges/view/'.$badge->getID().'/')
118 ->addAttribute($quality_name)
119 ->addAttribute($badge->getFlavor());
121 if ($badge->isArchived()) {
122 $item->setDisabled(true);
123 $item->addIcon('fa-ban', pht('Archived'));
126 $list->addItem($item);
129 $result = new PhabricatorApplicationSearchResultView();
130 $result->setObjectList($list);
131 $result->setNoDataString(pht('No badges found.'));
133 return $result;
137 protected function getNewUserBody() {
138 $create_button = id(new PHUIButtonView())
139 ->setTag('a')
140 ->setText(pht('Create a Badge'))
141 ->setHref('/badges/create/')
142 ->setColor(PHUIButtonView::GREEN);
144 $icon = $this->getApplication()->getIcon();
145 $app_name = $this->getApplication()->getName();
146 $view = id(new PHUIBigInfoView())
147 ->setIcon($icon)
148 ->setTitle(pht('Welcome to %s', $app_name))
149 ->setDescription(
150 pht('Badges let you award and distinguish special users '.
151 'throughout your install.'))
152 ->addAction($create_button);
154 return $view;