Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / harbormaster / view / HarbormasterBuildView.php
blobf54b1d3ba6488ed4f6938b6680e7278ca7446b95
1 <?php
3 final class HarbormasterBuildView
4 extends AphrontView {
6 private $builds = array();
8 public function setBuilds(array $builds) {
9 assert_instances_of($builds, 'HarbormasterBuild');
10 $this->builds = $builds;
11 return $this;
14 public function getBuilds() {
15 return $this->builds;
18 public function render() {
19 return $this->newObjectList();
22 public function newObjectList() {
23 $viewer = $this->getViewer();
24 $builds = $this->getBuilds();
26 $buildables = mpull($builds, 'getBuildable');
27 $object_phids = mpull($buildables, 'getBuildablePHID');
28 $initiator_phids = mpull($builds, 'getInitiatorPHID');
29 $phids = array_mergev(array($initiator_phids, $object_phids));
30 $phids = array_unique(array_filter($phids));
32 $handles = $viewer->loadHandles($phids);
34 $list = new PHUIObjectItemListView();
35 foreach ($builds as $build) {
36 $id = $build->getID();
38 $buildable_object = $handles[$build->getBuildable()->getBuildablePHID()];
40 $item = id(new PHUIObjectItemView())
41 ->setViewer($viewer)
42 ->setObject($build)
43 ->setObjectName($build->getObjectName())
44 ->setHeader($build->getName())
45 ->setHref($build->getURI())
46 ->setEpoch($build->getDateCreated())
47 ->addAttribute($buildable_object->getName());
49 $initiator_phid = $build->getInitiatorPHID();
50 if ($initiator_phid) {
51 $initiator = $handles[$initiator_phid];
52 $item->addByline($initiator->renderLink());
55 $status = $build->getBuildStatus();
57 $status_icon = HarbormasterBuildStatus::getBuildStatusIcon($status);
58 $status_color = HarbormasterBuildStatus::getBuildStatusColor($status);
59 $status_label = HarbormasterBuildStatus::getBuildStatusName($status);
61 $item->setStatusIcon("{$status_icon} {$status_color}", $status_label);
63 $list->addItem($item);
66 return $list;