Path: blob/master/src/applications/almanac/query/AlmanacNamespaceSearchEngine.php
12256 views
<?php12final class AlmanacNamespaceSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Almanac Namespaces');7}89public function getApplicationClassName() {10return 'PhabricatorAlmanacApplication';11}1213public function newQuery() {14return new AlmanacNamespaceQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorSearchTextField())20->setLabel(pht('Name Contains'))21->setKey('match')22->setDescription(pht('Search for namespaces 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/namespace/'.$path;38}3940protected function getBuiltinQueryNames() {41$names = array(42'all' => pht('All Namespaces'),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 $namespaces,63PhabricatorSavedQuery $query,64array $handles) {65assert_instances_of($namespaces, 'AlmanacNamespace');6667$viewer = $this->requireViewer();6869$list = new PHUIObjectItemListView();70$list->setUser($viewer);71foreach ($namespaces as $namespace) {72$id = $namespace->getID();7374$item = id(new PHUIObjectItemView())75->setObjectName(pht('Namespace %d', $id))76->setHeader($namespace->getName())77->setHref($this->getApplicationURI("namespace/{$id}/"))78->setObject($namespace);7980$list->addItem($item);81}8283$result = new PhabricatorApplicationSearchResultView();84$result->setObjectList($list);85$result->setNoDataString(pht('No Almanac namespaces found.'));8687return $result;88}89}909192