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 buildSavedQueryFromRequest(AphrontRequest $request) { | ||||
$saved = new PhabricatorSavedQuery(); | $saved = new PhabricatorSavedQuery(); | ||||
$saved->setParameter( | $saved->setParameter( | ||||
'authorPHIDs', | 'authorPHIDs', | ||||
$this->readUsersFromRequest($request, 'authors')); | $this->readUsersFromRequest($request, 'authors')); | ||||
$saved->setParameter( | |||||
'projects', | |||||
$this->readProjectsFromRequest($request, 'projects')); | |||||
$saved->setParameter( | $saved->setParameter( | ||||
'statuses', | 'statuses', | ||||
$request->getStrList('status')); | $request->getStrList('status')); | ||||
return $saved; | return $saved; | ||||
} | } | ||||
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | ||||
$query = id(new PholioMockQuery()) | $query = id(new PholioMockQuery()) | ||||
->needCoverFiles(true) | ->needCoverFiles(true) | ||||
->needImages(true) | ->needImages(true) | ||||
->needTokenCounts(true) | ->needTokenCounts(true); | ||||
->withAuthorPHIDs($saved->getParameter('authorPHIDs', array())) | |||||
->withStatuses($saved->getParameter('statuses', array())); | $datasource = id(new PhabricatorTypeaheadUserParameterizedDatasource()) | ||||
->setViewer($this->requireViewer()); | |||||
$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 ($statuses) { | |||||
$query->withStatuses($statuses); | |||||
} | |||||
$this->setQueryProjects($query, $saved); | |||||
return $query; | return $query; | ||||
} | } | ||||
public function buildSearchForm( | public function buildSearchForm( | ||||
AphrontFormView $form, | AphrontFormView $form, | ||||
PhabricatorSavedQuery $saved_query) { | PhabricatorSavedQuery $saved_query) { | ||||
$author_phids = $saved_query->getParameter('authorPHIDs', array()); | $author_phids = $saved_query->getParameter('authorPHIDs', array()); | ||||
$projects = $saved_query->getParameter('projects', array()); | |||||
$statuses = array( | $statuses = array( | ||||
'' => pht('Any Status'), | '' => pht('Any Status'), | ||||
'closed' => pht('Closed'), | 'closed' => pht('Closed'), | ||||
'open' => pht('Open'), | 'open' => pht('Open'), | ||||
); | ); | ||||
$status = $saved_query->getParameter('statuses', array()); | $status = $saved_query->getParameter('statuses', array()); | ||||
$status = head($status); | $status = head($status); | ||||
$form | $form | ||||
->appendControl( | ->appendControl( | ||||
id(new AphrontFormTokenizerControl()) | id(new AphrontFormTokenizerControl()) | ||||
->setDatasource(new PhabricatorPeopleDatasource()) | ->setDatasource(new PhabricatorTypeaheadUserParameterizedDatasource()) | ||||
->setName('authors') | ->setName('authors') | ||||
->setLabel(pht('Authors')) | ->setLabel(pht('Authors')) | ||||
->setValue($author_phids)) | ->setValue($author_phids)) | ||||
->appendControl( | |||||
id(new AphrontFormTokenizerControl()) | |||||
->setDatasource(new PhabricatorProjectLogicalDatasource()) | |||||
->setName('projects') | |||||
->setLabel(pht('Projects')) | |||||
->setValue($projects)) | |||||
->appendChild( | ->appendChild( | ||||
id(new AphrontFormSelectControl()) | id(new AphrontFormSelectControl()) | ||||
->setLabel(pht('Status')) | ->setLabel(pht('Status')) | ||||
->setName('status') | ->setName('status') | ||||
->setOptions($statuses) | ->setOptions($statuses) | ||||
->setValue($status)); | ->setValue($status)); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines |