[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DiffusionPushLogListView extends AphrontView { 4 5 private $logs; 6 private $handles; 7 8 public function setLogs(array $logs) { 9 assert_instances_of($logs, 'PhabricatorRepositoryPushLog'); 10 $this->logs = $logs; 11 return $this; 12 } 13 14 public function setHandles(array $handles) { 15 $this->handles = $handles; 16 return $this; 17 } 18 19 public function render() { 20 $logs = $this->logs; 21 $viewer = $this->getUser(); 22 $handles = $this->handles; 23 24 // Figure out which repositories are editable. We only let you see remote 25 // IPs if you have edit capability on a repository. 26 $editable_repos = array(); 27 if ($logs) { 28 $editable_repos = id(new PhabricatorRepositoryQuery()) 29 ->setViewer($viewer) 30 ->requireCapabilities( 31 array( 32 PhabricatorPolicyCapability::CAN_VIEW, 33 PhabricatorPolicyCapability::CAN_EDIT, 34 )) 35 ->withPHIDs(mpull($logs, 'getRepositoryPHID')) 36 ->execute(); 37 $editable_repos = mpull($editable_repos, null, 'getPHID'); 38 } 39 40 $rows = array(); 41 foreach ($logs as $log) { 42 43 // Reveal this if it's valid and the user can edit the repository. 44 $remote_addr = '-'; 45 if (isset($editable_repos[$log->getRepositoryPHID()])) { 46 $remote_long = $log->getPushEvent()->getRemoteAddress(); 47 if ($remote_long) { 48 $remote_addr = long2ip($remote_long); 49 } 50 } 51 52 $event_id = $log->getPushEvent()->getID(); 53 54 $callsign = $log->getRepository()->getCallsign(); 55 $rows[] = array( 56 phutil_tag( 57 'a', 58 array( 59 'href' => '/diffusion/pushlog/view/'.$event_id.'/', 60 ), 61 $event_id), 62 phutil_tag( 63 'a', 64 array( 65 'href' => '/diffusion/'.$callsign.'/', 66 ), 67 $callsign), 68 $handles[$log->getPusherPHID()]->renderLink(), 69 $remote_addr, 70 $log->getPushEvent()->getRemoteProtocol(), 71 $log->getRefType(), 72 $log->getRefName(), 73 phutil_tag( 74 'a', 75 array( 76 'href' => '/r'.$callsign.$log->getRefOld(), 77 ), 78 $log->getRefOldShort()), 79 phutil_tag( 80 'a', 81 array( 82 'href' => '/r'.$callsign.$log->getRefNew(), 83 ), 84 $log->getRefNewShort()), 85 86 // TODO: Make these human-readable. 87 $log->getChangeFlags(), 88 $log->getPushEvent()->getRejectCode(), 89 phabricator_datetime($log->getEpoch(), $viewer), 90 ); 91 } 92 93 $table = id(new AphrontTableView($rows)) 94 ->setHeaders( 95 array( 96 pht('Push'), 97 pht('Repository'), 98 pht('Pusher'), 99 pht('From'), 100 pht('Via'), 101 pht('Type'), 102 pht('Name'), 103 pht('Old'), 104 pht('New'), 105 pht('Flags'), 106 pht('Code'), 107 pht('Date'), 108 )) 109 ->setColumnClasses( 110 array( 111 '', 112 '', 113 '', 114 '', 115 '', 116 '', 117 'wide', 118 'n', 119 'n', 120 'date', 121 )); 122 123 return $table; 124 } 125 126 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |