3 final class HeraldWebhookSearchEngine
4 extends PhabricatorApplicationSearchEngine
{
6 public function getResultTypeDescription() {
7 return pht('Webhooks');
10 public function getApplicationClassName() {
11 return 'PhabricatorHeraldApplication';
14 public function newQuery() {
15 return new HeraldWebhookQuery();
18 protected function buildQueryFromParameters(array $map) {
19 $query = $this->newQuery();
21 if ($map['statuses']) {
22 $query->withStatuses($map['statuses']);
28 protected function buildCustomSearchFields() {
30 id(new PhabricatorSearchCheckboxesField())
32 ->setLabel(pht('Status'))
34 pht('Search for archived or active pastes.'))
35 ->setOptions(HeraldWebhook
::getStatusDisplayNameMap()),
39 protected function getURI($path) {
40 return '/herald/webhook/'.$path;
43 protected function getBuiltinQueryNames() {
46 $names['active'] = pht('Active');
47 $names['all'] = pht('All');
52 public function buildSavedQueryFromBuiltin($query_key) {
53 $query = $this->newSavedQuery();
54 $query->setQueryKey($query_key);
60 return $query->setParameter(
63 HeraldWebhook
::HOOKSTATUS_FIREHOSE
,
64 HeraldWebhook
::HOOKSTATUS_ENABLED
,
68 return parent
::buildSavedQueryFromBuiltin($query_key);
71 protected function renderResultList(
73 PhabricatorSavedQuery
$query,
75 assert_instances_of($hooks, 'HeraldWebhook');
77 $viewer = $this->requireViewer();
79 $list = id(new PHUIObjectItemListView())
81 foreach ($hooks as $hook) {
82 $item = id(new PHUIObjectItemView())
83 ->setObjectName(pht('Webhook %d', $hook->getID()))
84 ->setHeader($hook->getName())
85 ->setHref($hook->getURI())
86 ->addAttribute($hook->getWebhookURI());
88 $item->addIcon($hook->getStatusIcon(), $hook->getStatusDisplayName());
90 if ($hook->isDisabled()) {
91 $item->setDisabled(true);
94 $list->addItem($item);
97 return id(new PhabricatorApplicationSearchResultView())
98 ->setObjectList($list)
99 ->setNoDataString(pht('No webhooks found.'));