Path: blob/master/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
12242 views
<?php12final class PhabricatorPackagesPackageSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Packages');7}89public function getApplicationClassName() {10return 'PhabricatorPackagesApplication';11}1213public function newQuery() {14return id(new PhabricatorPackagesPackageQuery());15}1617public function canUseInPanelContext() {18return false;19}2021protected function buildQueryFromParameters(array $map) {22$query = $this->newQuery();2324if ($map['match'] !== null) {25$query->withNameNgrams($map['match']);26}2728if ($map['publisherPHIDs']) {29$query->withPublisherPHIDs($map['publisherPHIDs']);30}3132return $query;33}3435protected function buildCustomSearchFields() {36return array(37id(new PhabricatorSearchTextField())38->setLabel(pht('Name Contains'))39->setKey('match')40->setDescription(pht('Search for packages by name substring.')),41id(new PhabricatorSearchDatasourceField())42->setLabel(pht('Publishers'))43->setKey('publisherPHIDs')44->setAliases(array('publisherPHID', 'publisher', 'publishers'))45->setDatasource(new PhabricatorPackagesPublisherDatasource())46->setDescription(pht('Search for packages by publisher.')),47);48}4950protected function getURI($path) {51return '/packages/package/'.$path;52}5354protected function getBuiltinQueryNames() {55$names = array(56'all' => pht('All Packages'),57);5859return $names;60}6162public function buildSavedQueryFromBuiltin($query_key) {63$query = $this->newSavedQuery();64$query->setQueryKey($query_key);6566switch ($query_key) {67case 'all':68return $query;69}7071return parent::buildSavedQueryFromBuiltin($query_key);72}7374protected function renderResultList(75array $packages,76PhabricatorSavedQuery $query,77array $handles) {7879assert_instances_of($packages, 'PhabricatorPackagesPackage');80$viewer = $this->requireViewer();8182$list = id(new PhabricatorPackagesPackageListView())83->setViewer($viewer)84->setPackages($packages)85->newListView();8687return id(new PhabricatorApplicationSearchResultView())88->setObjectList($list)89->setNoDataString(pht('No packages found.'));90}9192}939495