Differential D15360 Diff 37041 src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | final class HarbormasterBuildPlanSearchEngine | ||||
protected function renderResultList( | protected function renderResultList( | ||||
array $plans, | array $plans, | ||||
PhabricatorSavedQuery $query, | PhabricatorSavedQuery $query, | ||||
array $handles) { | array $handles) { | ||||
assert_instances_of($plans, 'HarbormasterBuildPlan'); | assert_instances_of($plans, 'HarbormasterBuildPlan'); | ||||
$viewer = $this->requireViewer(); | $viewer = $this->requireViewer(); | ||||
if ($plans) { | |||||
$edge_query = id(new PhabricatorEdgeQuery()) | |||||
->withSourcePHIDs(mpull($plans, 'getPHID')) | |||||
->withEdgeTypes( | |||||
array( | |||||
PhabricatorProjectObjectHasProjectEdgeType::EDGECONST, | |||||
)); | |||||
$edge_query->execute(); | |||||
} | |||||
$list = new PHUIObjectItemListView(); | $list = new PHUIObjectItemListView(); | ||||
foreach ($plans as $plan) { | foreach ($plans as $plan) { | ||||
$id = $plan->getID(); | $id = $plan->getID(); | ||||
$item = id(new PHUIObjectItemView()) | $item = id(new PHUIObjectItemView()) | ||||
->setObjectName(pht('Plan %d', $plan->getID())) | ->setObjectName(pht('Plan %d', $id)) | ||||
->setHeader($plan->getName()); | ->setHeader($plan->getName()); | ||||
if ($plan->isDisabled()) { | if ($plan->isDisabled()) { | ||||
$item->setDisabled(true); | $item->setDisabled(true); | ||||
} | } | ||||
if ($plan->isAutoplan()) { | if ($plan->isAutoplan()) { | ||||
$item->addIcon('fa-lock grey', pht('Autoplan')); | $item->addIcon('fa-lock grey', pht('Autoplan')); | ||||
} | } | ||||
$item->setHref($this->getApplicationURI("plan/{$id}/")); | $item->setHref($this->getApplicationURI("plan/{$id}/")); | ||||
$phid = $plan->getPHID(); | |||||
$project_phids = $edge_query->getDestinationPHIDs(array($phid)); | |||||
$project_handles = $viewer->loadHandles($project_phids); | |||||
$item->addAttribute( | |||||
id(new PHUIHandleTagListView()) | |||||
->setLimit(4) | |||||
->setNoDataString(pht('No Projects')) | |||||
->setSlim(true) | |||||
->setHandles($project_handles)); | |||||
$list->addItem($item); | $list->addItem($item); | ||||
} | } | ||||
$result = new PhabricatorApplicationSearchResultView(); | $result = new PhabricatorApplicationSearchResultView(); | ||||
$result->setObjectList($list); | $result->setObjectList($list); | ||||
$result->setNoDataString(pht('No build plans found.')); | $result->setNoDataString(pht('No build plans found.')); | ||||
return $result; | return $result; | ||||
} | } | ||||
} | } |