@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 82 lines 1.9 kB view raw
1<?php 2 3final class DiffusionSyncLogListView extends AphrontView { 4 5 private $logs; 6 7 /** 8 * @param array<PhabricatorRepositorySyncEvent> $logs 9 */ 10 public function setLogs(array $logs) { 11 assert_instances_of($logs, PhabricatorRepositorySyncEvent::class); 12 $this->logs = $logs; 13 return $this; 14 } 15 16 public function render() { 17 $events = $this->logs; 18 $viewer = $this->getViewer(); 19 20 $rows = array(); 21 foreach ($events as $event) { 22 $repository = $event->getRepository(); 23 $repository_link = phutil_tag( 24 'a', 25 array( 26 'href' => $repository->getURI(), 27 ), 28 $repository->getDisplayName()); 29 30 $event_id = $event->getID(); 31 32 $sync_wait = pht('%sus', new PhutilNumber($event->getSyncWait())); 33 34 $device_link = $viewer->renderHandle($event->getDevicePHID()); 35 $from_device_link = $viewer->renderHandle($event->getFromDevicePHID()); 36 37 $rows[] = array( 38 $event_id, 39 $repository_link, 40 $device_link, 41 $from_device_link, 42 $event->getDeviceVersion(), 43 $event->getFromDeviceVersion(), 44 $event->getResultType(), 45 $event->getResultCode(), 46 phabricator_datetime($event->getEpoch(), $viewer), 47 $sync_wait, 48 ); 49 } 50 51 $table = id(new AphrontTableView($rows)) 52 ->setHeaders( 53 array( 54 pht('Sync'), 55 pht('Repository'), 56 pht('Device'), 57 pht('From Device'), 58 pht('Version'), 59 pht('From Version'), 60 pht('Result'), 61 pht('Code'), 62 pht('Date'), 63 pht('Sync Wait'), 64 )) 65 ->setColumnClasses( 66 array( 67 'n', 68 '', 69 '', 70 '', 71 'n', 72 'n', 73 'wide right', 74 'n', 75 'right', 76 'n right', 77 )); 78 79 return $table; 80 } 81 82}