@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class PhabricatorEditEngineSearchEngine
4 extends PhabricatorApplicationSearchEngine {
5
6 public function getResultTypeDescription() {
7 return pht('Edit Engines');
8 }
9
10 public function getApplicationClassName() {
11 return PhabricatorTransactionsApplication::class;
12 }
13
14 public function newQuery() {
15 return id(new PhabricatorEditEngineQuery());
16 }
17
18 public function canUseInPanelContext() {
19 return false;
20 }
21
22 protected function buildQueryFromParameters(array $map) {
23 $query = $this->newQuery();
24 return $query;
25 }
26
27 protected function buildCustomSearchFields() {
28 return array();
29 }
30
31 protected function getDefaultFieldOrder() {
32 return array();
33 }
34
35 protected function getURI($path) {
36 return '/transactions/editengine/'.$path;
37 }
38
39 protected function getBuiltinQueryNames() {
40 $names = array(
41 'all' => pht('All Edit Engines'),
42 );
43
44 return $names;
45 }
46
47 public function buildSavedQueryFromBuiltin($query_key) {
48 $query = $this->newSavedQuery();
49 $query->setQueryKey($query_key);
50
51 switch ($query_key) {
52 case 'all':
53 return $query;
54 }
55
56 return parent::buildSavedQueryFromBuiltin($query_key);
57 }
58
59 /**
60 * @param array<PhabricatorEditEngine> $engines
61 * @param PhabricatorSavedQuery $query
62 * @param array<PhabricatorObjectHandle> $handles
63 */
64 protected function renderResultList(
65 array $engines,
66 PhabricatorSavedQuery $query,
67 array $handles) {
68 assert_instances_of($engines, PhabricatorEditEngine::class);
69 $viewer = $this->requireViewer();
70
71 $list = id(new PHUIObjectItemListView())
72 ->setUser($viewer);
73 foreach ($engines as $engine) {
74 if (!$engine->isEngineConfigurable()) {
75 continue;
76 }
77
78 $engine_key = $engine->getEngineKey();
79 $query_uri = "/transactions/editengine/{$engine_key}/";
80
81 $application = $engine->getApplication();
82 $app_icon = $application->getIcon();
83
84 $item = id(new PHUIObjectItemView())
85 ->setHeader($engine->getSummaryHeader())
86 ->setHref($query_uri)
87 ->setStatusIcon($app_icon)
88 ->addAttribute($engine->getSummaryText());
89
90 $list->addItem($item);
91 }
92
93 return id(new PhabricatorApplicationSearchResultView())
94 ->setObjectList($list);
95 }
96}