Differential D18426 Diff 44366 src/applications/search/controller/PhabricatorSearchDeleteController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/controller/PhabricatorSearchDeleteController.php
| <?php | <?php | ||||
| final class PhabricatorSearchDeleteController | final class PhabricatorSearchDeleteController | ||||
| extends PhabricatorSearchBaseController { | extends PhabricatorSearchBaseController { | ||||
| public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
| $viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
| $id = $request->getURIData('id'); | |||||
| if ($id) { | |||||
| $named_query = id(new PhabricatorNamedQueryQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withIDs(array($id)) | |||||
| ->requireCapabilities( | |||||
| array( | |||||
| PhabricatorPolicyCapability::CAN_VIEW, | |||||
| PhabricatorPolicyCapability::CAN_EDIT, | |||||
| )) | |||||
| ->executeOne(); | |||||
| if (!$named_query) { | |||||
| return new Aphront404Response(); | |||||
| } | |||||
| $engine = newv($named_query->getEngineClassName(), array()); | |||||
| $engine->setViewer($viewer); | |||||
| $key = $named_query->getQueryKey(); | |||||
| } else { | |||||
| $key = $request->getURIData('queryKey'); | $key = $request->getURIData('queryKey'); | ||||
| $engine_class = $request->getURIData('engine'); | $engine_class = $request->getURIData('engine'); | ||||
| $base_class = 'PhabricatorApplicationSearchEngine'; | $base_class = 'PhabricatorApplicationSearchEngine'; | ||||
| if (!is_subclass_of($engine_class, $base_class)) { | if (!is_subclass_of($engine_class, $base_class)) { | ||||
| return new Aphront400Response(); | return new Aphront400Response(); | ||||
| } | } | ||||
| $engine = newv($engine_class, array()); | $engine = newv($engine_class, array()); | ||||
| $engine->setViewer($viewer); | $engine->setViewer($viewer); | ||||
| $named_query = id(new PhabricatorNamedQueryQuery()) | if (!$engine->isBuiltinQuery($key)) { | ||||
| ->setViewer($viewer) | return new Aphront404Response(); | ||||
| ->withEngineClassNames(array($engine_class)) | |||||
| ->withQueryKeys(array($key)) | |||||
| ->withUserPHIDs(array($viewer->getPHID())) | |||||
| ->executeOne(); | |||||
| if (!$named_query && $engine->isBuiltinQuery($key)) { | |||||
| $named_query = $engine->getBuiltinQuery($key); | |||||
| } | } | ||||
| if (!$named_query) { | $named_query = $engine->getBuiltinQuery($key); | ||||
| return new Aphront404Response(); | |||||
| } | } | ||||
| $builtin = null; | $builtin = null; | ||||
| if ($engine->isBuiltinQuery($key)) { | if ($engine->isBuiltinQuery($key)) { | ||||
| $builtin = $engine->getBuiltinQuery($key); | $builtin = $engine->getBuiltinQuery($key); | ||||
| } | } | ||||
| $return_uri = $engine->getQueryManagementURI(); | $return_uri = $engine->getQueryManagementURI(); | ||||
| ▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines | |||||