@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
fork

Configure Feed

Select the types of activity you want to include in your feed.

Allow third-party code to extend upstream datasources via EngineExtension

Summary: Depends on D19089. Fixes T13079. This is likely not the final form of this, but creates a defensible extension point.

Test Plan: See T13079 for discussion.

Maniphest Tasks: T13079

Differential Revision: https://secure.phabricator.com/D19090

+33 -1
+18
src/applications/search/engine/PhabricatorDatasourceEngine.php
··· 34 34 return null; 35 35 } 36 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 + 37 55 }
+5
src/applications/search/engineextension/PhabricatorDatasourceEngineExtension.php
··· 21 21 return null; 22 22 } 23 23 24 + public function newDatasourcesForCompositeDatasource( 25 + PhabricatorTypeaheadCompositeDatasource $datasource) { 26 + return array(); 27 + } 28 + 24 29 final public static function getAllExtensions() { 25 30 return id(new PhutilClassMapQuery()) 26 31 ->setAncestorClass(__CLASS__)
+10 -1
src/applications/typeahead/datasource/PhabricatorTypeaheadCompositeDatasource.php
··· 223 223 224 224 private function getUsableDatasources() { 225 225 if ($this->usable === null) { 226 + $viewer = $this->getViewer(); 227 + 226 228 $sources = $this->getComponentDatasources(); 229 + 230 + $extension_sources = id(new PhabricatorDatasourceEngine()) 231 + ->setViewer($viewer) 232 + ->newDatasourcesForCompositeDatasource($this); 233 + foreach ($extension_sources as $extension_source) { 234 + $sources[] = $extension_source; 235 + } 227 236 228 237 $usable = array(); 229 238 foreach ($sources as $source) { ··· 239 248 } 240 249 } 241 250 242 - $source->setViewer($this->getViewer()); 251 + $source->setViewer($viewer); 243 252 $usable[] = $source; 244 253 } 245 254 $this->usable = $usable;