@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 recaptime-dev/main 110 lines 2.5 kB view raw
1<?php 2 3final class PhabricatorAuthSSHKeySearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 private $sshKeyObject; 7 8 public function setSSHKeyObject(PhabricatorSSHPublicKeyInterface $object) { 9 $this->sshKeyObject = $object; 10 return $this; 11 } 12 13 public function getSSHKeyObject() { 14 return $this->sshKeyObject; 15 } 16 17 public function canUseInPanelContext() { 18 return false; 19 } 20 21 public function getResultTypeDescription() { 22 return pht('SSH Keys'); 23 } 24 25 public function getApplicationClassName() { 26 return PhabricatorAuthApplication::class; 27 } 28 29 public function newQuery() { 30 $object = $this->getSSHKeyObject(); 31 $object_phid = $object->getPHID(); 32 33 return id(new PhabricatorAuthSSHKeyQuery()) 34 ->withObjectPHIDs(array($object_phid)); 35 } 36 37 protected function buildQueryFromParameters(array $map) { 38 $query = $this->newQuery(); 39 40 return $query; 41 } 42 43 44 protected function buildCustomSearchFields() { 45 return array(); 46 } 47 48 protected function getURI($path) { 49 $object = $this->getSSHKeyObject(); 50 $object_phid = $object->getPHID(); 51 52 return "/auth/sshkey/for/{$object_phid}/{$path}"; 53 } 54 55 protected function getBuiltinQueryNames() { 56 $names = array( 57 'all' => pht('All Keys'), 58 ); 59 60 return $names; 61 } 62 63 public function buildSavedQueryFromBuiltin($query_key) { 64 65 $query = $this->newSavedQuery(); 66 $query->setQueryKey($query_key); 67 68 switch ($query_key) { 69 case 'all': 70 return $query; 71 } 72 73 return parent::buildSavedQueryFromBuiltin($query_key); 74 } 75 76 /** 77 * @param array<PhabricatorAuthSSHKey> $keys 78 * @param PhabricatorSavedQuery $query 79 * @param array<PhabricatorObjectHandle> $handles 80 */ 81 protected function renderResultList( 82 array $keys, 83 PhabricatorSavedQuery $query, 84 array $handles) { 85 assert_instances_of($keys, PhabricatorAuthSSHKey::class); 86 87 $viewer = $this->requireViewer(); 88 89 $list = new PHUIObjectItemListView(); 90 $list->setUser($viewer); 91 foreach ($keys as $key) { 92 $item = id(new PHUIObjectItemView()) 93 ->setObjectName(pht('SSH Key %d', $key->getID())) 94 ->setHeader($key->getName()) 95 ->setHref($key->getURI()); 96 97 if (!$key->getIsActive()) { 98 $item->setDisabled(true); 99 } 100 101 $list->addItem($item); 102 } 103 104 $result = new PhabricatorApplicationSearchResultView(); 105 $result->setObjectList($list); 106 $result->setNoDataString(pht('No matching SSH keys.')); 107 108 return $result; 109 } 110}