@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 PhabricatorProjectColumnSearchEngine
4 extends PhabricatorApplicationSearchEngine {
5
6 public function getResultTypeDescription() {
7 return pht('Workboard Columns');
8 }
9
10 public function getApplicationClassName() {
11 return PhabricatorProjectApplication::class;
12 }
13
14 public function canUseInPanelContext() {
15 return false;
16 }
17
18 public function newQuery() {
19 return new PhabricatorProjectColumnQuery();
20 }
21
22 protected function buildCustomSearchFields() {
23 return array(
24 id(new PhabricatorPHIDsSearchField())
25 ->setLabel(pht('Projects'))
26 ->setKey('projectPHIDs')
27 ->setConduitKey('projects')
28 ->setDescription(
29 pht('Search for objects with specific project PHIDs.'))
30 ->setAliases(array('project', 'projects', 'projectPHID')),
31 );
32 }
33
34 protected function buildQueryFromParameters(array $map) {
35 $query = $this->newQuery();
36
37 if ($map['projectPHIDs']) {
38 $query->withProjectPHIDs($map['projectPHIDs']);
39 }
40
41 return $query;
42 }
43
44 protected function getURI($path) {
45 // NOTE: There's no way to query columns in the web UI, at least for
46 // the moment.
47 return '';
48 }
49
50 protected function getBuiltinQueryNames() {
51 $names = array();
52
53 $names['all'] = pht('All');
54
55 return $names;
56 }
57
58 public function buildSavedQueryFromBuiltin($query_key) {
59 $query = $this->newSavedQuery();
60 $query->setQueryKey($query_key);
61
62 switch ($query_key) {
63 case 'all':
64 return $query;
65 }
66
67 return parent::buildSavedQueryFromBuiltin($query_key);
68 }
69
70 /**
71 * @param array<PhabricatorProjectColumn> $projects
72 * @param PhabricatorSavedQuery $query
73 * @param array<PhabricatorObjectHandle> $handles
74 */
75 protected function renderResultList(
76 array $projects,
77 PhabricatorSavedQuery $query,
78 array $handles) {
79 assert_instances_of($projects, PhabricatorProjectColumn::class);
80 $viewer = $this->requireViewer();
81
82 return null;
83 }
84
85}