Differential D16196 Diff 38966 src/applications/search/controller/PhabricatorSearchRelationshipSourceController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/controller/PhabricatorSearchRelationshipSourceController.php
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | $results = id(new PhabricatorSearchDocumentQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->requireObjectCapabilities($capabilities) | ->requireObjectCapabilities($capabilities) | ||||
->withSavedQuery($query) | ->withSavedQuery($query) | ||||
->setOffset(0) | ->setOffset(0) | ||||
->setLimit(100) | ->setLimit(100) | ||||
->execute(); | ->execute(); | ||||
$phids = array_fill_keys(mpull($results, 'getPHID'), true); | $phids = array_fill_keys(mpull($results, 'getPHID'), true); | ||||
$phids += $this->queryObjectNames($query_str, $capabilities); | $phids = $this->queryObjectNames($query, $capabilities) + $phids; | ||||
$phids = array_keys($phids); | $phids = array_keys($phids); | ||||
$handles = $viewer->loadHandles($phids); | $handles = $viewer->loadHandles($phids); | ||||
$data = array(); | $data = array(); | ||||
foreach ($handles as $handle) { | foreach ($handles as $handle) { | ||||
$view = new PhabricatorHandleObjectSelectorDataView($handle); | $view = new PhabricatorHandleObjectSelectorDataView($handle); | ||||
$data[] = $view->renderData(); | $data[] = $view->renderData(); | ||||
} | } | ||||
return id(new AphrontAjaxResponse())->setContent($data); | return id(new AphrontAjaxResponse())->setContent($data); | ||||
} | } | ||||
private function queryObjectNames($query, $capabilities) { | private function queryObjectNames( | ||||
PhabricatorSavedQuery $query, | |||||
array $capabilities) { | |||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$viewer = $request->getUser(); | $viewer = $request->getUser(); | ||||
$types = $query->getParameter('types'); | |||||
$match = $query->getParameter('query'); | |||||
$objects = id(new PhabricatorObjectQuery()) | $objects = id(new PhabricatorObjectQuery()) | ||||
->setViewer($viewer) | ->setViewer($viewer) | ||||
->requireCapabilities($capabilities) | ->requireCapabilities($capabilities) | ||||
->withTypes(array($request->getURIData('type'))) | ->withTypes($query->getParameter('types')) | ||||
->withNames(array($query)) | ->withNames(array($match)) | ||||
->execute(); | ->execute(); | ||||
return mpull($objects, 'getPHID'); | return mpull($objects, 'getPHID'); | ||||
} | } | ||||
} | } |