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

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 72 lines 2.0 kB view raw
1<?php 2 3final class HarbormasterBuildView 4 extends AphrontView { 5 6 private $builds = array(); 7 8 /** 9 * @param array<HarbormasterBuild> $builds 10 */ 11 public function setBuilds(array $builds) { 12 assert_instances_of($builds, HarbormasterBuild::class); 13 $this->builds = $builds; 14 return $this; 15 } 16 17 public function getBuilds() { 18 return $this->builds; 19 } 20 21 public function render() { 22 return $this->newObjectList(); 23 } 24 25 public function newObjectList() { 26 $viewer = $this->getViewer(); 27 $builds = $this->getBuilds(); 28 29 $buildables = mpull($builds, 'getBuildable'); 30 $object_phids = mpull($buildables, 'getBuildablePHID'); 31 $initiator_phids = mpull($builds, 'getInitiatorPHID'); 32 $phids = array_mergev(array($initiator_phids, $object_phids)); 33 $phids = array_unique(array_filter($phids)); 34 35 $handles = $viewer->loadHandles($phids); 36 37 $list = new PHUIObjectItemListView(); 38 foreach ($builds as $build) { 39 $id = $build->getID(); 40 41 $buildable_object = $handles[$build->getBuildable()->getBuildablePHID()]; 42 43 $item = id(new PHUIObjectItemView()) 44 ->setViewer($viewer) 45 ->setObject($build) 46 ->setObjectName($build->getObjectName()) 47 ->setHeader($build->getName()) 48 ->setHref($build->getURI()) 49 ->setEpoch($build->getDateCreated()) 50 ->addAttribute($buildable_object->getName()); 51 52 $initiator_phid = $build->getInitiatorPHID(); 53 if ($initiator_phid) { 54 $initiator = $handles[$initiator_phid]; 55 $item->addByline($initiator->renderLink()); 56 } 57 58 $status = $build->getBuildStatus(); 59 60 $status_icon = HarbormasterBuildStatus::getBuildStatusIcon($status); 61 $status_color = HarbormasterBuildStatus::getBuildStatusColor($status); 62 $status_label = HarbormasterBuildStatus::getBuildStatusName($status); 63 64 $item->setStatusIcon("{$status_icon} {$status_color}", $status_label); 65 66 $list->addItem($item); 67 } 68 69 return $list; 70 } 71 72}