Changeset View
Changeset View
Standalone View
Standalone View
src/applications/packages/query/PackagesVersionSearchEngine.php
- This file was added.
| <?php | |||||
| final class PackagesVersionSearchEngine | |||||
| extends PhabricatorApplicationSearchEngine { | |||||
| public function getResultTypeDescription() { | |||||
| return pht('version Versions'); | |||||
| } | |||||
| public function getApplicationClassName() { | |||||
| return 'PhabricatorPackagesApplication'; | |||||
| } | |||||
| public function buildSavedQueryFromRequest(AphrontRequest $request) { | |||||
| $saved = new PhabricatorSavedQuery(); | |||||
| $saved->setParameter( | |||||
| 'packagePHIDs', | |||||
| $this->readPHIDsFromRequest($request, 'packages')); | |||||
| return $saved; | |||||
| } | |||||
| public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | |||||
| $query = id(new PackagesVersionQuery()) | |||||
| ->needProjectPHIDs(true); | |||||
| $package_phids = $saved->getParameter('packagePHIDs'); | |||||
| if ($package_phids) { | |||||
| $query->withPackagePHIDs($package_phids); | |||||
| } | |||||
| return $query; | |||||
| } | |||||
| public function buildSearchForm( | |||||
| AphrontFormView $form, | |||||
| PhabricatorSavedQuery $saved) { | |||||
| $packages = $saved->getParameter('packagePHIDs', array()); | |||||
| $form | |||||
| ->appendControl( | |||||
| id(new AphrontFormTokenizerControl()) | |||||
| ->setLabel(pht('Packages')) | |||||
| ->setName('packages') | |||||
| ->setDatasource(new PackagesPackageDatasource()) | |||||
| ->setValue($packages)); | |||||
| } | |||||
| protected function getURI($path) { | |||||
| return '/packages/version/'.$path; | |||||
| } | |||||
| protected function getBuiltinQueryNames() { | |||||
| $names = array(); | |||||
| $names['all'] = pht('All Package Versions'); | |||||
| return $names; | |||||
| } | |||||
| public function buildSavedQueryFromBuiltin($query_key) { | |||||
| $query = $this->newSavedQuery(); | |||||
| $query->setQueryKey($query_key); | |||||
| switch ($query_key) { | |||||
| case 'all': | |||||
| return $query; | |||||
| } | |||||
| return parent::buildSavedQueryFromBuiltin($query_key); | |||||
| } | |||||
| protected function getRequiredHandlePHIDsForResultList( | |||||
| array $objects, | |||||
| PhabricatorSavedQuery $query) { | |||||
| assert_instances_of($objects, 'PackagesVersion'); | |||||
| $phids = array(); | |||||
| foreach ($objects as $version) { | |||||
| $phids[] = $version->getPackagePHID(); | |||||
| } | |||||
| return $phids; | |||||
| } | |||||
| protected function renderResultList( | |||||
| array $objects, | |||||
| PhabricatorSavedQuery $query, | |||||
| array $handles) { | |||||
| assert_instances_of($objects, 'PackagesVersion'); | |||||
| $viewer = $this->requireViewer(); | |||||
| $list = id(new PHUIObjectItemListView()); | |||||
| foreach ($objects as $version) { | |||||
| $package = $handles[$version->getPackagePHID()]; | |||||
| $item = id(new PHUIObjectItemView()) | |||||
| ->setObjectName($package->getName()) | |||||
| ->setHeader($version->getTitle()) | |||||
| ->setHref($version->getURI()); | |||||
| $project_handles = array_select_keys( | |||||
| $handles, | |||||
| $version->getProjectPHIDs()); | |||||
| if ($project_handles) { | |||||
| $item->addAttribute( | |||||
| id(new PHUIHandleTagListView()) | |||||
| ->setLimit(4) | |||||
| ->setSlim(true) | |||||
| ->setHandles($project_handles)); | |||||
| } | |||||
| $list->addItem($item); | |||||
| } | |||||
| $result = new PhabricatorApplicationSearchResultView(); | |||||
| $result->setObjectList($list); | |||||
| $result->setNoDataString(pht('No Versions found.')); | |||||
| return $result; | |||||
| } | |||||
| } | |||||