@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 PhabricatorDatasourceEngine extends Phobject {
4
5 private $viewer;
6
7 public function setViewer(PhabricatorUser $viewer) {
8 $this->viewer = $viewer;
9 return $this;
10 }
11
12 public function getViewer() {
13 return $this->viewer;
14 }
15
16 public function getAllQuickSearchDatasources() {
17 return PhabricatorDatasourceEngineExtension::getAllQuickSearchDatasources();
18 }
19
20 public function newJumpURI($query) {
21 $viewer = $this->getViewer();
22 $extensions = PhabricatorDatasourceEngineExtension::getAllExtensions();
23
24 foreach ($extensions as $extension) {
25 $jump_uri = id(clone $extension)
26 ->setViewer($viewer)
27 ->newJumpURI($query);
28
29 if ($jump_uri !== null) {
30 return $jump_uri;
31 }
32 }
33
34 return null;
35 }
36
37 public function newDatasourcesForCompositeDatasource(
38 PhabricatorTypeaheadCompositeDatasource $datasource) {
39 $viewer = $this->getViewer();
40 $extensions = PhabricatorDatasourceEngineExtension::getAllExtensions();
41
42 $sources = array();
43 foreach ($extensions as $extension) {
44 $extension_sources = id(clone $extension)
45 ->setViewer($viewer)
46 ->newDatasourcesForCompositeDatasource($datasource);
47 foreach ($extension_sources as $extension_source) {
48 $sources[] = $extension_source;
49 }
50 }
51
52 return $sources;
53 }
54
55}