@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
at upstream/main 85 lines 2.4 kB view raw
1<?php 2 3final class PhabricatorSearchDefaultController 4 extends PhabricatorSearchBaseController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $this->getViewer(); 8 $engine_class = $request->getURIData('engine'); 9 10 $base_class = PhabricatorApplicationSearchEngine::class; 11 if (!is_subclass_of($engine_class, $base_class)) { 12 return new Aphront400Response(); 13 } 14 15 $engine = newv($engine_class, array()); 16 $engine->setViewer($viewer); 17 18 $key = $request->getURIData('queryKey'); 19 20 $named_query = id(new PhabricatorNamedQueryQuery()) 21 ->setViewer($viewer) 22 ->withEngineClassNames(array($engine_class)) 23 ->withQueryKeys(array($key)) 24 ->withUserPHIDs( 25 array( 26 $viewer->getPHID(), 27 PhabricatorNamedQuery::SCOPE_GLOBAL, 28 )) 29 ->executeOne(); 30 31 if (!$named_query && $engine->isBuiltinQuery($key)) { 32 $named_query = $engine->getBuiltinQuery($key); 33 } 34 35 if (!$named_query) { 36 return new Aphront404Response(); 37 } 38 39 $return_uri = $engine->getQueryManagementURI(); 40 41 $builtin = null; 42 if ($engine->isBuiltinQuery($key)) { 43 $builtin = $engine->getBuiltinQuery($key); 44 } 45 46 if ($request->isFormPost()) { 47 $config = id(new PhabricatorNamedQueryConfigQuery()) 48 ->setViewer($viewer) 49 ->withEngineClassNames(array($engine_class)) 50 ->withScopePHIDs(array($viewer->getPHID())) 51 ->executeOne(); 52 if (!$config) { 53 $config = PhabricatorNamedQueryConfig::initializeNewQueryConfig() 54 ->setEngineClassName($engine_class) 55 ->setScopePHID($viewer->getPHID()); 56 } 57 58 $config->setConfigProperty( 59 PhabricatorNamedQueryConfig::PROPERTY_PINNED, 60 $key); 61 62 $config->save(); 63 64 return id(new AphrontRedirectResponse())->setURI($return_uri); 65 } 66 67 if ($named_query->getIsBuiltin()) { 68 $query_name = $builtin->getQueryName(); 69 } else { 70 $query_name = $named_query->getQueryName(); 71 } 72 73 $title = pht('Set Default Query'); 74 $body = pht( 75 'This query will become your default query in the current application.'); 76 $button = pht('Set Default Query'); 77 78 return $this->newDialog() 79 ->setTitle($title) 80 ->appendChild($body) 81 ->addCancelButton($return_uri) 82 ->addSubmitButton($button); 83 } 84 85}