@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 108 lines 2.4 kB view raw
1<?php 2 3final class DiffusionPullLogListView extends AphrontView { 4 5 private $logs; 6 7 /** 8 * @param array<PhabricatorRepositoryPullEvent> $logs 9 */ 10 public function setLogs(array $logs) { 11 assert_instances_of($logs, PhabricatorRepositoryPullEvent::class); 12 $this->logs = $logs; 13 return $this; 14 } 15 16 public function render() { 17 $events = $this->logs; 18 $viewer = $this->getViewer(); 19 20 $handle_phids = array(); 21 foreach ($events as $event) { 22 if ($event->getPullerPHID()) { 23 $handle_phids[] = $event->getPullerPHID(); 24 } 25 } 26 $handles = $viewer->loadHandles($handle_phids); 27 28 // Only administrators can view remote addresses. 29 $remotes_visible = $viewer->getIsAdmin(); 30 31 $rows = array(); 32 foreach ($events as $event) { 33 if ($event->getRepositoryPHID()) { 34 $repository = $event->getRepository(); 35 } else { 36 $repository = null; 37 } 38 39 if ($remotes_visible) { 40 $remote_address = $event->getRemoteAddress(); 41 } else { 42 $remote_address = null; 43 } 44 45 $event_id = $event->getID(); 46 47 $repository_link = null; 48 if ($repository) { 49 $repository_link = phutil_tag( 50 'a', 51 array( 52 'href' => $repository->getURI(), 53 ), 54 $repository->getDisplayName()); 55 } 56 57 $puller_link = null; 58 if ($event->getPullerPHID()) { 59 $puller_link = $viewer->renderHandle($event->getPullerPHID()); 60 } 61 62 $rows[] = array( 63 $event_id, 64 $repository_link, 65 $puller_link, 66 $remote_address, 67 $event->getRemoteProtocolDisplayName(), 68 $event->newResultIcon(), 69 $event->getResultCode(), 70 phabricator_datetime($event->getEpoch(), $viewer), 71 ); 72 } 73 74 $table = id(new AphrontTableView($rows)) 75 ->setHeaders( 76 array( 77 pht('Pull'), 78 pht('Repository'), 79 pht('Puller'), 80 pht('From'), 81 pht('Via'), 82 null, 83 pht('Code'), 84 pht('Date'), 85 )) 86 ->setColumnClasses( 87 array( 88 'n', 89 '', 90 '', 91 'n', 92 'wide', 93 '', 94 'n', 95 'right', 96 )) 97 ->setColumnVisibility( 98 array( 99 true, 100 true, 101 true, 102 $remotes_visible, 103 )); 104 105 return $table; 106 } 107 108}