2018-02-14 15:33:19 -08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
final class PhabricatorDatasourceEngine extends Phobject {
|
|
|
|
|
2018-02-14 15:49:00 -08:00
|
|
|
private $viewer;
|
|
|
|
|
|
|
|
public function setViewer(PhabricatorUser $viewer) {
|
|
|
|
$this->viewer = $viewer;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getViewer() {
|
|
|
|
return $this->viewer;
|
|
|
|
}
|
|
|
|
|
2018-02-14 15:33:19 -08:00
|
|
|
public function getAllQuickSearchDatasources() {
|
|
|
|
return PhabricatorDatasourceEngineExtension::getAllQuickSearchDatasources();
|
|
|
|
}
|
2018-02-14 15:49:00 -08:00
|
|
|
|
|
|
|
public function newJumpURI($query) {
|
|
|
|
$viewer = $this->getViewer();
|
|
|
|
$extensions = PhabricatorDatasourceEngineExtension::getAllExtensions();
|
|
|
|
|
|
|
|
foreach ($extensions as $extension) {
|
|
|
|
$jump_uri = id(clone $extension)
|
|
|
|
->setViewer($viewer)
|
|
|
|
->newJumpURI($query);
|
|
|
|
|
|
|
|
if ($jump_uri !== null) {
|
|
|
|
return $jump_uri;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2018-02-14 17:41:43 -08:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2018-02-14 15:33:19 -08:00
|
|
|
}
|