@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
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}