Changeset View
Changeset View
Standalone View
Standalone View
src/applications/pholio/query/PholioMockSearchEngine.php
<?php | <?php | ||||
final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine { | final class PholioMockSearchEngine extends PhabricatorApplicationSearchEngine { | ||||
public function getResultTypeDescription() { | public function getResultTypeDescription() { | ||||
return pht('Pholio Mocks'); | return pht('Pholio Mocks'); | ||||
} | } | ||||
public function getApplicationClassName() { | public function getApplicationClassName() { | ||||
return 'PhabricatorPholioApplication'; | return 'PhabricatorPholioApplication'; | ||||
} | } | ||||
public function buildSavedQueryFromRequest(AphrontRequest $request) { | public function newResultObject() { | ||||
$saved = new PhabricatorSavedQuery(); | return new PholioMock(); | ||||
} | |||||
$saved->setParameter( | |||||
'authorPHIDs', | |||||
$this->readUsersFromRequest($request, 'authors')); | |||||
$saved->setParameter( | |||||
'projects', | |||||
$this->readProjectsFromRequest($request, 'projects')); | |||||
$saved->setParameter( | |||||
'statuses', | |||||
$request->getStrList('status')); | |||||
return $saved; | public function buildCustomSearchFields() { | ||||
return array( | |||||
id(new PhabricatorSearchUsersField()) | |||||
->setKey('authorPHIDs') | |||||
->setAliases(array('authors')) | |||||
->setLabel(pht('Authors')), | |||||
id(new PhabricatorSearchCheckboxesField()) | |||||
->setKey('statuses') | |||||
->setLabel(pht('Status')) | |||||
->setOptions( | |||||
id(new PholioMock()) | |||||
->getStatuses()), | |||||
); | |||||
} | } | ||||
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | public function buildQueryFromParameters(array $map) { | ||||
$query = id(new PholioMockQuery()) | $query = id(new PholioMockQuery()) | ||||
->needCoverFiles(true) | ->needCoverFiles(true) | ||||
->needImages(true) | ->needImages(true) | ||||
->needTokenCounts(true); | ->needTokenCounts(true); | ||||
$datasource = id(new PhabricatorPeopleUserFunctionDatasource()) | if ($map['authorPHIDs']) { | ||||
->setViewer($this->requireViewer()); | $query->withAuthorPHIDs($map['authorPHIDs']); | ||||
$author_phids = $saved->getParameter('authorPHIDs', array()); | |||||
$author_phids = $datasource->evaluateTokens($author_phids); | |||||
if ($author_phids) { | |||||
$query->withAuthorPHIDs($author_phids); | |||||
} | } | ||||
$statuses = $saved->getParameter('statuses', array()); | if ($map['statuses']) { | ||||
if ($statuses) { | $query->withStatuses($map['statuses']); | ||||
$query->withStatuses($statuses); | |||||
} | } | ||||
$this->setQueryProjects($query, $saved); | |||||
return $query; | return $query; | ||||
} | } | ||||
public function buildSearchForm( | |||||
AphrontFormView $form, | |||||
PhabricatorSavedQuery $saved_query) { | |||||
$author_phids = $saved_query->getParameter('authorPHIDs', array()); | |||||
$projects = $saved_query->getParameter('projects', array()); | |||||
$statuses = array( | |||||
'' => pht('Any Status'), | |||||
'closed' => pht('Closed'), | |||||
'open' => pht('Open'), | |||||
); | |||||
$status = $saved_query->getParameter('statuses', array()); | |||||
$status = head($status); | |||||
$form | |||||
->appendControl( | |||||
id(new AphrontFormTokenizerControl()) | |||||
->setDatasource(new PhabricatorPeopleUserFunctionDatasource()) | |||||
->setName('authors') | |||||
->setLabel(pht('Authors')) | |||||
->setValue($author_phids)) | |||||
->appendControl( | |||||
id(new AphrontFormTokenizerControl()) | |||||
->setDatasource(new PhabricatorProjectLogicalDatasource()) | |||||
->setName('projects') | |||||
->setLabel(pht('Projects')) | |||||
->setValue($projects)) | |||||
->appendChild( | |||||
id(new AphrontFormSelectControl()) | |||||
->setLabel(pht('Status')) | |||||
->setName('status') | |||||
->setOptions($statuses) | |||||
->setValue($status)); | |||||
} | |||||
protected function getURI($path) { | protected function getURI($path) { | ||||
return '/pholio/'.$path; | return '/pholio/'.$path; | ||||
} | } | ||||
protected function getBuiltinQueryNames() { | protected function getBuiltinQueryNames() { | ||||
$names = array( | $names = array( | ||||
'open' => pht('Open Mocks'), | 'open' => pht('Open Mocks'), | ||||
'all' => pht('All Mocks'), | 'all' => pht('All Mocks'), | ||||
▲ Show 20 Lines • Show All 77 Lines • Show Last 20 Lines |