3 final class HarbormasterArtifactSearchEngine
4 extends PhabricatorApplicationSearchEngine
{
6 public function getResultTypeDescription() {
7 return pht('Harbormaster Artifacts');
10 public function getApplicationClassName() {
11 return 'PhabricatorHarbormasterApplication';
14 public function newQuery() {
15 return new HarbormasterBuildArtifactQuery();
18 protected function buildCustomSearchFields() {
20 id(new PhabricatorPHIDsSearchField())
21 ->setLabel(pht('Targets'))
22 ->setKey('buildTargetPHIDs')
34 pht('Search for artifacts attached to particular build targets.')),
38 protected function buildQueryFromParameters(array $map) {
39 $query = $this->newQuery();
41 if ($map['buildTargetPHIDs']) {
42 $query->withBuildTargetPHIDs($map['buildTargetPHIDs']);
48 protected function getURI($path) {
49 return '/harbormaster/artifact/'.$path;
52 protected function getBuiltinQueryNames() {
54 'all' => pht('All Artifacts'),
58 public function buildSavedQueryFromBuiltin($query_key) {
59 $query = $this->newSavedQuery();
60 $query->setQueryKey($query_key);
67 return parent
::buildSavedQueryFromBuiltin($query_key);
70 protected function renderResultList(
72 PhabricatorSavedQuery
$query,
74 assert_instances_of($artifacts, 'HarbormasterBuildArtifact');
76 $viewer = $this->requireViewer();
78 $list = new PHUIObjectItemListView();
79 foreach ($artifacts as $artifact) {
80 $id = $artifact->getID();
82 $item = id(new PHUIObjectItemView())
83 ->setObjectName(pht('Artifact %d', $id));
85 $list->addItem($item);
88 return id(new PhabricatorApplicationSearchResultView())
89 ->setObjectList($list)
90 ->setNoDataString(pht('No artifacts found.'));