Differential D7927 Diff 17941 src/applications/repository/query/PhabricatorRepositorySearchEngine.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/repository/query/PhabricatorRepositorySearchEngine.php
<?php | <?php | ||||
final class PhabricatorRepositorySearchEngine | final class PhabricatorRepositorySearchEngine | ||||
extends PhabricatorApplicationSearchEngine { | extends PhabricatorApplicationSearchEngine { | ||||
public function buildSavedQueryFromRequest(AphrontRequest $request) { | public function buildSavedQueryFromRequest(AphrontRequest $request) { | ||||
$saved = new PhabricatorSavedQuery(); | $saved = new PhabricatorSavedQuery(); | ||||
$saved->setParameter('callsigns', $request->getStrList('callsigns')); | $saved->setParameter('callsigns', $request->getStrList('callsigns')); | ||||
$saved->setParameter('status', $request->getStr('status')); | $saved->setParameter('status', $request->getStr('status')); | ||||
$saved->setParameter('order', $request->getStr('order')); | $saved->setParameter('order', $request->getStr('order')); | ||||
$saved->setParameter('hosted', $request->getStr('hosted')); | |||||
$saved->setParameter('types', $request->getArr('types')); | $saved->setParameter('types', $request->getArr('types')); | ||||
$saved->setParameter('name', $request->getStr('name')); | $saved->setParameter('name', $request->getStr('name')); | ||||
return $saved; | return $saved; | ||||
} | } | ||||
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | ||||
$query = id(new PhabricatorRepositoryQuery()) | $query = id(new PhabricatorRepositoryQuery()) | ||||
Show All 15 Lines | public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { | ||||
$order = $saved->getParameter('order'); | $order = $saved->getParameter('order'); | ||||
$order = idx($this->getOrderValues(), $order); | $order = idx($this->getOrderValues(), $order); | ||||
if ($order) { | if ($order) { | ||||
$query->setOrder($order); | $query->setOrder($order); | ||||
} else { | } else { | ||||
$query->setOrder(head($this->getOrderValues())); | $query->setOrder(head($this->getOrderValues())); | ||||
} | } | ||||
$hosted = $saved->getParameter('hosted'); | |||||
$hosted = idx($this->getHostedValues(), $hosted); | |||||
if ($hosted) { | |||||
$query->withHosted($hosted); | |||||
} | |||||
$types = $saved->getParameter('types'); | $types = $saved->getParameter('types'); | ||||
if ($types) { | if ($types) { | ||||
$query->withTypes($types); | $query->withTypes($types); | ||||
} | } | ||||
$name = $saved->getParameter('name'); | $name = $saved->getParameter('name'); | ||||
if (strlen($name)) { | if (strlen($name)) { | ||||
$query->withNameContains($name); | $query->withNameContains($name); | ||||
Show All 22 Lines | $form | ||||
->setName('name') | ->setName('name') | ||||
->setLabel(pht('Name Contains')) | ->setLabel(pht('Name Contains')) | ||||
->setValue($name)) | ->setValue($name)) | ||||
->appendChild( | ->appendChild( | ||||
id(new AphrontFormSelectControl()) | id(new AphrontFormSelectControl()) | ||||
->setName('status') | ->setName('status') | ||||
->setLabel(pht('Status')) | ->setLabel(pht('Status')) | ||||
->setValue($saved_query->getParameter('status')) | ->setValue($saved_query->getParameter('status')) | ||||
->setOptions($this->getStatusOptions())); | ->setOptions($this->getStatusOptions())) | ||||
->appendChild( | |||||
id(new AphrontFormSelectControl()) | |||||
->setName('hosted') | |||||
->setLabel(pht('Hosted')) | |||||
->setValue($saved_query->getParameter('hosted')) | |||||
->setOptions($this->getHostedOptions())); | |||||
$type_control = id(new AphrontFormCheckboxControl()) | $type_control = id(new AphrontFormCheckboxControl()) | ||||
->setLabel(pht('Types')); | ->setLabel(pht('Types')); | ||||
$all_types = PhabricatorRepositoryType::getAllRepositoryTypes(); | $all_types = PhabricatorRepositoryType::getAllRepositoryTypes(); | ||||
foreach ($all_types as $key => $name) { | foreach ($all_types as $key => $name) { | ||||
$type_control->addCheckbox( | $type_control->addCheckbox( | ||||
'types[]', | 'types[]', | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | private function getOrderValues() { | ||||
return array( | return array( | ||||
'committed' => PhabricatorRepositoryQuery::ORDER_COMMITTED, | 'committed' => PhabricatorRepositoryQuery::ORDER_COMMITTED, | ||||
'name' => PhabricatorRepositoryQuery::ORDER_NAME, | 'name' => PhabricatorRepositoryQuery::ORDER_NAME, | ||||
'callsign' => PhabricatorRepositoryQuery::ORDER_CALLSIGN, | 'callsign' => PhabricatorRepositoryQuery::ORDER_CALLSIGN, | ||||
'created' => PhabricatorRepositoryQuery::ORDER_CREATED, | 'created' => PhabricatorRepositoryQuery::ORDER_CREATED, | ||||
); | ); | ||||
} | } | ||||
private function getHostedOptions() { | |||||
return array( | |||||
'' => pht('Hosted and Remote Repositories'), | |||||
'phabricator' => pht('Hosted Repositories'), | |||||
'remote' => pht('Remote Repositories'), | |||||
); | |||||
} | |||||
private function getHostedValues() { | |||||
return array( | |||||
'' => PhabricatorRepositoryQuery::HOSTED_ALL, | |||||
'phabricator' => PhabricatorRepositoryQuery::HOSTED_PHABRICATOR, | |||||
'remote' => PhabricatorRepositoryQuery::HOSTED_REMOTE, | |||||
); | |||||
} | |||||
} | } |