@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
3/**
4 * @extends PhabricatorCursorPagedPolicyAwareQuery<PhabricatorEditEngine>
5 */
6final class PhabricatorEditEngineQuery
7 extends PhabricatorCursorPagedPolicyAwareQuery {
8
9 private $engineKeys;
10
11 public function withEngineKeys(array $keys) {
12 $this->engineKeys = $keys;
13 return $this;
14 }
15
16 protected function loadPage() {
17 $engines = PhabricatorEditEngine::getAllEditEngines();
18
19 if ($this->engineKeys !== null) {
20 $engines = array_select_keys($engines, $this->engineKeys);
21 }
22
23 return $engines;
24 }
25
26 protected function willFilterPage(array $engines) {
27 $viewer = $this->getViewer();
28
29 foreach ($engines as $key => $engine) {
30 $app_class = $engine->getEngineApplicationClass();
31 if ($app_class === null) {
32 continue;
33 }
34
35 $can_see = PhabricatorApplication::isClassInstalledForViewer(
36 $app_class,
37 $viewer);
38 if (!$can_see) {
39 $this->didRejectResult($engine);
40 unset($engines[$key]);
41 continue;
42 }
43 }
44
45 return $engines;
46 }
47
48 public function getQueryApplicationClass() {
49 return PhabricatorTransactionsApplication::class;
50 }
51
52}