Differential D13173 Diff 31849 src/applications/search/controller/PhabricatorSearchHovercardController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/controller/PhabricatorSearchHovercardController.php
<?php | <?php | ||||
final class PhabricatorSearchHovercardController | final class PhabricatorSearchHovercardController | ||||
extends PhabricatorSearchBaseController { | extends PhabricatorSearchBaseController { | ||||
public function shouldAllowPublic() { | public function shouldAllowPublic() { | ||||
return true; | return true; | ||||
} | } | ||||
public function processRequest() { | public function handleRequest(AphrontRequest $request) { | ||||
$request = $this->getRequest(); | $viewer = $this->getViewer(); | ||||
$user = $request->getUser(); | |||||
$phids = $request->getArr('phids'); | $phids = $request->getArr('phids'); | ||||
$handles = id(new PhabricatorHandleQuery()) | $handles = id(new PhabricatorHandleQuery()) | ||||
->setViewer($user) | ->setViewer($viewer) | ||||
->withPHIDs($phids) | ->withPHIDs($phids) | ||||
->execute(); | ->execute(); | ||||
$objects = id(new PhabricatorObjectQuery()) | $objects = id(new PhabricatorObjectQuery()) | ||||
->setViewer($user) | ->setViewer($viewer) | ||||
->withPHIDs($phids) | ->withPHIDs($phids) | ||||
->execute(); | ->execute(); | ||||
$cards = array(); | $cards = array(); | ||||
foreach ($phids as $phid) { | foreach ($phids as $phid) { | ||||
$handle = $handles[$phid]; | $handle = $handles[$phid]; | ||||
$object = $objects[$phid]; | |||||
$hovercard = new PhabricatorHovercardView(); | $hovercard = id(new PhabricatorHovercardView()) | ||||
$hovercard->setObjectHandle($handle); | ->setUser($viewer) | ||||
->setObjectHandle($handle); | |||||
if ($object) { | |||||
$hovercard->setObject($object); | |||||
} | |||||
// Send it to the other side of the world, thanks to PhutilEventEngine | // Send it to the other side of the world, thanks to PhutilEventEngine | ||||
$event = new PhabricatorEvent( | $event = new PhabricatorEvent( | ||||
PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD, | PhabricatorEventType::TYPE_UI_DIDRENDERHOVERCARD, | ||||
array( | array( | ||||
'hovercard' => $hovercard, | 'hovercard' => $hovercard, | ||||
'handle' => $handle, | 'handle' => $handle, | ||||
'object' => idx($objects, $phid), | 'object' => $object, | ||||
)); | )); | ||||
$event->setUser($user); | $event->setUser($viewer); | ||||
PhutilEventEngine::dispatchEvent($event); | PhutilEventEngine::dispatchEvent($event); | ||||
$cards[$phid] = $hovercard; | $cards[$phid] = $hovercard; | ||||
} | } | ||||
// Browser-friendly for non-Ajax requests | // Browser-friendly for non-Ajax requests | ||||
if (!$request->isAjax()) { | if (!$request->isAjax()) { | ||||
foreach ($cards as $key => $hovercard) { | foreach ($cards as $key => $hovercard) { | ||||
Show All 21 Lines |