Page MenuHomePhabricator

D19090.id45755.diff
No OneTemporary

D19090.id45755.diff

diff --git a/src/applications/search/engine/PhabricatorDatasourceEngine.php b/src/applications/search/engine/PhabricatorDatasourceEngine.php
--- a/src/applications/search/engine/PhabricatorDatasourceEngine.php
+++ b/src/applications/search/engine/PhabricatorDatasourceEngine.php
@@ -34,4 +34,22 @@
return null;
}
+ public function newDatasourcesForCompositeDatasource(
+ PhabricatorTypeaheadCompositeDatasource $datasource) {
+ $viewer = $this->getViewer();
+ $extensions = PhabricatorDatasourceEngineExtension::getAllExtensions();
+
+ $sources = array();
+ foreach ($extensions as $extension) {
+ $extension_sources = id(clone $extension)
+ ->setViewer($viewer)
+ ->newDatasourcesForCompositeDatasource($datasource);
+ foreach ($extension_sources as $extension_source) {
+ $sources[] = $extension_source;
+ }
+ }
+
+ return $sources;
+ }
+
}
diff --git a/src/applications/search/engineextension/PhabricatorDatasourceEngineExtension.php b/src/applications/search/engineextension/PhabricatorDatasourceEngineExtension.php
--- a/src/applications/search/engineextension/PhabricatorDatasourceEngineExtension.php
+++ b/src/applications/search/engineextension/PhabricatorDatasourceEngineExtension.php
@@ -21,6 +21,11 @@
return null;
}
+ public function newDatasourcesForCompositeDatasource(
+ PhabricatorTypeaheadCompositeDatasource $datasource) {
+ return array();
+ }
+
final public static function getAllExtensions() {
return id(new PhutilClassMapQuery())
->setAncestorClass(__CLASS__)
diff --git a/src/applications/typeahead/datasource/PhabricatorTypeaheadCompositeDatasource.php b/src/applications/typeahead/datasource/PhabricatorTypeaheadCompositeDatasource.php
--- a/src/applications/typeahead/datasource/PhabricatorTypeaheadCompositeDatasource.php
+++ b/src/applications/typeahead/datasource/PhabricatorTypeaheadCompositeDatasource.php
@@ -223,8 +223,17 @@
private function getUsableDatasources() {
if ($this->usable === null) {
+ $viewer = $this->getViewer();
+
$sources = $this->getComponentDatasources();
+ $extension_sources = id(new PhabricatorDatasourceEngine())
+ ->setViewer($viewer)
+ ->newDatasourcesForCompositeDatasource($this);
+ foreach ($extension_sources as $extension_source) {
+ $sources[] = $extension_source;
+ }
+
$usable = array();
foreach ($sources as $source) {
$application_class = $source->getDatasourceApplicationClass();
@@ -239,7 +248,7 @@
}
}
- $source->setViewer($this->getViewer());
+ $source->setViewer($viewer);
$usable[] = $source;
}
$this->usable = $usable;

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 9:01 PM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7472395
Default Alt Text
D19090.id45755.diff (2 KB)

Event Timeline