@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 94 lines 2.2 kB view raw
1<?php 2 3final class NuanceSourceSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getApplicationClassName() { 7 return PhabricatorNuanceApplication::class; 8 } 9 10 public function getResultTypeDescription() { 11 return pht('Nuance Sources'); 12 } 13 14 public function newQuery() { 15 return new NuanceSourceQuery(); 16 } 17 18 protected function buildQueryFromParameters(array $map) { 19 $query = $this->newQuery(); 20 21 if ($map['match'] !== null) { 22 $query->withNameNgrams($map['match']); 23 } 24 25 return $query; 26 } 27 28 protected function buildCustomSearchFields() { 29 return array( 30 id(new PhabricatorSearchTextField()) 31 ->setLabel(pht('Name Contains')) 32 ->setKey('match') 33 ->setDescription(pht('Search for sources by name substring.')), 34 ); 35 } 36 37 protected function getURI($path) { 38 return '/nuance/source/'.$path; 39 } 40 41 protected function getBuiltinQueryNames() { 42 $names = array( 43 'all' => pht('All Sources'), 44 ); 45 46 return $names; 47 } 48 49 public function buildSavedQueryFromBuiltin($query_key) { 50 $query = $this->newSavedQuery(); 51 $query->setQueryKey($query_key); 52 53 switch ($query_key) { 54 case 'all': 55 return $query; 56 } 57 58 return parent::buildSavedQueryFromBuiltin($query_key); 59 } 60 61 /** 62 * @param array<NuanceSource> $sources 63 * @param PhabricatorSavedQuery $query 64 * @param array<PhabricatorObjectHandle> $handles 65 */ 66 protected function renderResultList( 67 array $sources, 68 PhabricatorSavedQuery $query, 69 array $handles) { 70 assert_instances_of($sources, NuanceSource::class); 71 72 $viewer = $this->requireViewer(); 73 74 $list = new PHUIObjectItemListView(); 75 $list->setUser($viewer); 76 foreach ($sources as $source) { 77 $item = id(new PHUIObjectItemView()) 78 ->setObjectName(pht('Source %d', $source->getID())) 79 ->setHeader($source->getName()) 80 ->setHref($source->getURI()); 81 82 $item->addIcon('none', $source->getType()); 83 84 $list->addItem($item); 85 } 86 87 $result = new PhabricatorApplicationSearchResultView(); 88 $result->setObjectList($list); 89 $result->setNoDataString(pht('No sources found.')); 90 91 return $result; 92 } 93 94}