Path: blob/master/src/applications/almanac/query/AlmanacNetworkSearchEngine.php
12256 views
<?php12final class AlmanacNetworkSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Almanac Networks');7}89public function getApplicationClassName() {10return 'PhabricatorAlmanacApplication';11}1213public function newQuery() {14return new AlmanacNetworkQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorSearchTextField())20->setLabel(pht('Name Contains'))21->setKey('match')22->setDescription(pht('Search for networks by name substring.')),23);24}2526protected function buildQueryFromParameters(array $map) {27$query = $this->newQuery();2829if ($map['match'] !== null) {30$query->withNameNgrams($map['match']);31}3233return $query;34}3536protected function getURI($path) {37return '/almanac/network/'.$path;38}3940protected function getBuiltinQueryNames() {41$names = array(42'all' => pht('All Networks'),43);4445return $names;46}4748public function buildSavedQueryFromBuiltin($query_key) {4950$query = $this->newSavedQuery();51$query->setQueryKey($query_key);5253switch ($query_key) {54case 'all':55return $query;56}5758return parent::buildSavedQueryFromBuiltin($query_key);59}6061protected function renderResultList(62array $networks,63PhabricatorSavedQuery $query,64array $handles) {65assert_instances_of($networks, 'AlmanacNetwork');6667$viewer = $this->requireViewer();6869$list = new PHUIObjectItemListView();70$list->setUser($viewer);71foreach ($networks as $network) {72$id = $network->getID();7374$item = id(new PHUIObjectItemView())75->setObjectName(pht('Network %d', $id))76->setHeader($network->getName())77->setHref($this->getApplicationURI("network/{$id}/"))78->setObject($network);7980$list->addItem($item);81}8283$result = new PhabricatorApplicationSearchResultView();84$result->setObjectList($list);85$result->setNoDataString(pht('No Almanac Networks found.'));8687return $result;88}89}909192