Path: blob/master/src/applications/conduit/query/PhabricatorConduitSearchEngine.php
12256 views
<?php12final class PhabricatorConduitSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Conduit Methods');7}89public function getApplicationClassName() {10return 'PhabricatorConduitApplication';11}1213public function canUseInPanelContext() {14return false;15}1617public function getPageSize(PhabricatorSavedQuery $saved) {18return PHP_INT_MAX - 1;19}2021public function buildSavedQueryFromRequest(AphrontRequest $request) {22$saved = new PhabricatorSavedQuery();2324$saved->setParameter('isStable', $request->getStr('isStable'));25$saved->setParameter('isUnstable', $request->getStr('isUnstable'));26$saved->setParameter('isDeprecated', $request->getStr('isDeprecated'));27$saved->setParameter('nameContains', $request->getStr('nameContains'));2829return $saved;30}3132public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {33$query = id(new PhabricatorConduitMethodQuery());3435$query->withIsStable($saved->getParameter('isStable'));36$query->withIsUnstable($saved->getParameter('isUnstable'));37$query->withIsDeprecated($saved->getParameter('isDeprecated'));38$query->withIsInternal(false);3940$contains = $saved->getParameter('nameContains');41if ($contains !== null && strlen($contains)) {42$query->withNameContains($contains);43}4445return $query;46}4748public function buildSearchForm(49AphrontFormView $form,50PhabricatorSavedQuery $saved) {5152$form53->appendChild(54id(new AphrontFormTextControl())55->setLabel(pht('Name Contains'))56->setName('nameContains')57->setValue($saved->getParameter('nameContains')));5859$is_stable = $saved->getParameter('isStable');60$is_unstable = $saved->getParameter('isUnstable');61$is_deprecated = $saved->getParameter('isDeprecated');62$form63->appendChild(64id(new AphrontFormCheckboxControl())65->setLabel('Stability')66->addCheckbox(67'isStable',681,69hsprintf(70'<strong>%s</strong>: %s',71pht('Stable Methods'),72pht('Show established API methods with stable interfaces.')),73$is_stable)74->addCheckbox(75'isUnstable',761,77hsprintf(78'<strong>%s</strong>: %s',79pht('Unstable Methods'),80pht('Show new methods which are subject to change.')),81$is_unstable)82->addCheckbox(83'isDeprecated',841,85hsprintf(86'<strong>%s</strong>: %s',87pht('Deprecated Methods'),88pht(89'Show old methods which will be deleted in a future '.90'version of this software.')),91$is_deprecated));92}9394protected function getURI($path) {95return '/conduit/'.$path;96}9798protected function getBuiltinQueryNames() {99return array(100'modern' => pht('Modern Methods'),101'all' => pht('All Methods'),102);103}104105public function buildSavedQueryFromBuiltin($query_key) {106$query = $this->newSavedQuery();107$query->setQueryKey($query_key);108109switch ($query_key) {110case 'modern':111return $query112->setParameter('isStable', true)113->setParameter('isUnstable', true);114case 'all':115return $query116->setParameter('isStable', true)117->setParameter('isUnstable', true)118->setParameter('isDeprecated', true);119}120121return parent::buildSavedQueryFromBuiltin($query_key);122}123124protected function renderResultList(125array $methods,126PhabricatorSavedQuery $query,127array $handles) {128assert_instances_of($methods, 'ConduitAPIMethod');129130$viewer = $this->requireViewer();131132$out = array();133134$last = null;135$list = null;136foreach ($methods as $method) {137$app = $method->getApplicationName();138if ($app !== $last) {139$last = $app;140if ($list) {141$out[] = $list;142}143$list = id(new PHUIObjectItemListView());144$list->setHeader($app);145146$app_object = $method->getApplication();147if ($app_object) {148$app_name = $app_object->getName();149} else {150$app_name = $app;151}152}153154$method_name = $method->getAPIMethodName();155156$item = id(new PHUIObjectItemView())157->setHeader($method_name)158->setHref($this->getApplicationURI('method/'.$method_name.'/'))159->addAttribute($method->getMethodSummary());160161switch ($method->getMethodStatus()) {162case ConduitAPIMethod::METHOD_STATUS_STABLE:163break;164case ConduitAPIMethod::METHOD_STATUS_UNSTABLE:165$item->addIcon('fa-warning', pht('Unstable'));166$item->setStatusIcon('fa-warning yellow');167break;168case ConduitAPIMethod::METHOD_STATUS_DEPRECATED:169$item->addIcon('fa-warning', pht('Deprecated'));170$item->setStatusIcon('fa-warning red');171break;172case ConduitAPIMethod::METHOD_STATUS_FROZEN:173$item->addIcon('fa-archive', pht('Frozen'));174$item->setStatusIcon('fa-archive grey');175break;176}177178$list->addItem($item);179}180181if ($list) {182$out[] = $list;183}184185$result = new PhabricatorApplicationSearchResultView();186$result->setContent($out);187188return $result;189}190191}192193194