@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 112 lines 2.8 kB view raw
1<?php 2 3final class PhabricatorOAuthServerClientSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getResultTypeDescription() { 7 return pht('OAuth Clients'); 8 } 9 10 public function getApplicationClassName() { 11 return PhabricatorOAuthServerApplication::class; 12 } 13 14 public function canUseInPanelContext() { 15 return false; 16 } 17 18 public function newQuery() { 19 return id(new PhabricatorOAuthServerClientQuery()); 20 } 21 22 protected function buildQueryFromParameters(array $map) { 23 $query = $this->newQuery(); 24 25 if ($map['creatorPHIDs']) { 26 $query->withCreatorPHIDs($map['creatorPHIDs']); 27 } 28 29 return $query; 30 } 31 32 protected function buildCustomSearchFields() { 33 return array( 34 id(new PhabricatorUsersSearchField()) 35 ->setAliases(array('creators')) 36 ->setKey('creatorPHIDs') 37 ->setConduitKey('creators') 38 ->setLabel(pht('Creators')) 39 ->setDescription( 40 pht('Search for applications created by particular users.')), 41 ); 42 } 43 44 protected function getURI($path) { 45 return '/oauthserver/'.$path; 46 } 47 48 protected function getBuiltinQueryNames() { 49 $names = array(); 50 51 if ($this->requireViewer()->isLoggedIn()) { 52 $names['created'] = pht('Created'); 53 } 54 55 $names['all'] = pht('All Applications'); 56 57 return $names; 58 } 59 60 public function buildSavedQueryFromBuiltin($query_key) { 61 $query = $this->newSavedQuery(); 62 $query->setQueryKey($query_key); 63 64 switch ($query_key) { 65 case 'all': 66 return $query; 67 case 'created': 68 return $query->setParameter( 69 'creatorPHIDs', 70 array($this->requireViewer()->getPHID())); 71 } 72 73 return parent::buildSavedQueryFromBuiltin($query_key); 74 } 75 76 /** 77 * @param array<PhabricatorOAuthServerClient> $clients 78 * @param PhabricatorSavedQuery $query 79 * @param array<PhabricatorObjectHandle> $handles 80 */ 81 protected function renderResultList( 82 array $clients, 83 PhabricatorSavedQuery $query, 84 array $handles) { 85 assert_instances_of($clients, PhabricatorOAuthServerClient::class); 86 87 $viewer = $this->requireViewer(); 88 89 $list = id(new PHUIObjectItemListView()) 90 ->setUser($viewer); 91 foreach ($clients as $client) { 92 $item = id(new PHUIObjectItemView()) 93 ->setObjectName(pht('Application %d', $client->getID())) 94 ->setHeader($client->getName()) 95 ->setHref($client->getViewURI()) 96 ->setObject($client); 97 98 if ($client->getIsDisabled()) { 99 $item->setDisabled(true); 100 } 101 102 $list->addItem($item); 103 } 104 105 $result = new PhabricatorApplicationSearchResultView(); 106 $result->setObjectList($list); 107 $result->setNoDataString(pht('No clients found.')); 108 109 return $result; 110 } 111 112}