Differential D20219 Diff 48280 src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
| Show First 20 Lines • Show All 122 Lines • ▼ Show 20 Lines | final class HarbormasterBuildSearchEngine | ||||
| protected function renderResultList( | protected function renderResultList( | ||||
| array $builds, | array $builds, | ||||
| PhabricatorSavedQuery $query, | PhabricatorSavedQuery $query, | ||||
| array $handles) { | array $handles) { | ||||
| assert_instances_of($builds, 'HarbormasterBuild'); | assert_instances_of($builds, 'HarbormasterBuild'); | ||||
| $viewer = $this->requireViewer(); | $viewer = $this->requireViewer(); | ||||
| $buildables = mpull($builds, 'getBuildable'); | $list = id(new HarbormasterBuildView()) | ||||
| $object_phids = mpull($buildables, 'getBuildablePHID'); | |||||
| $initiator_phids = mpull($builds, 'getInitiatorPHID'); | |||||
| $phids = array_mergev(array($initiator_phids, $object_phids)); | |||||
| $phids = array_unique(array_filter($phids)); | |||||
| $handles = $viewer->loadHandles($phids); | |||||
| $list = new PHUIObjectItemListView(); | |||||
| foreach ($builds as $build) { | |||||
| $id = $build->getID(); | |||||
| $initiator = $handles[$build->getInitiatorPHID()]; | |||||
| $buildable_object = $handles[$build->getBuildable()->getBuildablePHID()]; | |||||
| $item = id(new PHUIObjectItemView()) | |||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->setObject($build) | ->setBuilds($builds) | ||||
| ->setObjectName(pht('Build %d', $build->getID())) | ->newObjectList(); | ||||
| ->setHeader($build->getName()) | |||||
| ->setHref($build->getURI()) | |||||
| ->setEpoch($build->getDateCreated()) | |||||
| ->addAttribute($buildable_object->getName()); | |||||
| if ($initiator) { | |||||
| $item->addHandleIcon($initiator, $initiator->getName()); | |||||
| } | |||||
| $status = $build->getBuildStatus(); | |||||
| $status_icon = HarbormasterBuildStatus::getBuildStatusIcon($status); | |||||
| $status_color = HarbormasterBuildStatus::getBuildStatusColor($status); | |||||
| $status_label = HarbormasterBuildStatus::getBuildStatusName($status); | |||||
| $item->setStatusIcon("{$status_icon} {$status_color}", $status_label); | |||||
| $list->addItem($item); | |||||
| } | |||||
| $result = new PhabricatorApplicationSearchResultView(); | |||||
| $result->setObjectList($list); | |||||
| $result->setNoDataString(pht('No builds found.')); | |||||
| return $result; | return id(new PhabricatorApplicationSearchResultView()) | ||||
| ->setObjectList($list) | |||||
| ->setNoDataString(pht('No builds found.')); | |||||
| } | } | ||||
| } | } | ||||