@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 136 lines 4.1 kB view raw
1<?php 2 3final class HarbormasterBuildTargetSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 public function getResultTypeDescription() { 7 return pht('Harbormaster Build Targets'); 8 } 9 10 public function getApplicationClassName() { 11 return PhabricatorHarbormasterApplication::class; 12 } 13 14 public function newQuery() { 15 return new HarbormasterBuildTargetQuery(); 16 } 17 18 protected function buildCustomSearchFields() { 19 return array( 20 id(new PhabricatorSearchDatasourceField()) 21 ->setLabel(pht('Builds')) 22 ->setKey('buildPHIDs') 23 ->setAliases(array('build', 'builds', 'buildPHID')) 24 ->setDescription( 25 pht('Search for targets of a given build.')) 26 ->setDatasource(new HarbormasterBuildPlanDatasource()), 27 id(new PhabricatorSearchDateField()) 28 ->setLabel(pht('Created After')) 29 ->setKey('createdStart') 30 ->setDescription( 31 pht('Search for targets created on or after a particular date.')), 32 id(new PhabricatorSearchDateField()) 33 ->setLabel(pht('Created Before')) 34 ->setKey('createdEnd') 35 ->setDescription( 36 pht('Search for targets created on or before a particular date.')), 37 id(new PhabricatorSearchDateField()) 38 ->setLabel(pht('Started After')) 39 ->setKey('startedStart') 40 ->setDescription( 41 pht('Search for targets started on or after a particular date.')), 42 id(new PhabricatorSearchDateField()) 43 ->setLabel(pht('Started Before')) 44 ->setKey('startedEnd') 45 ->setDescription( 46 pht('Search for targets started on or before a particular date.')), 47 id(new PhabricatorSearchDateField()) 48 ->setLabel(pht('Completed After')) 49 ->setKey('completedStart') 50 ->setDescription( 51 pht('Search for targets completed on or after a particular date.')), 52 id(new PhabricatorSearchDateField()) 53 ->setLabel(pht('Completed Before')) 54 ->setKey('completedEnd') 55 ->setDescription( 56 pht('Search for targets completed on or before a particular date.')), 57 id(new PhabricatorSearchStringListField()) 58 ->setLabel(pht('Statuses')) 59 ->setKey('statuses') 60 ->setAliases(array('status')) 61 ->setDescription( 62 pht('Search for targets with given statuses.')), 63 ); 64 } 65 66 protected function buildQueryFromParameters(array $map) { 67 $query = $this->newQuery(); 68 69 if ($map['buildPHIDs']) { 70 $query->withBuildPHIDs($map['buildPHIDs']); 71 } 72 73 if ($map['createdStart'] !== null || $map['createdEnd'] !== null) { 74 $query->withDateCreatedBetween( 75 $map['createdStart'], 76 $map['createdEnd']); 77 } 78 79 if ($map['startedStart'] !== null || $map['startedEnd'] !== null) { 80 $query->withDateStartedBetween( 81 $map['startedStart'], 82 $map['startedEnd']); 83 } 84 85 if ($map['completedStart'] !== null || $map['completedEnd'] !== null) { 86 $query->withDateCompletedBetween( 87 $map['completedStart'], 88 $map['completedEnd']); 89 } 90 91 if ($map['statuses']) { 92 $query->withTargetStatuses($map['statuses']); 93 } 94 95 return $query; 96 } 97 98 protected function getURI($path) { 99 return '/harbormaster/target/'.$path; 100 } 101 102 protected function getBuiltinQueryNames() { 103 return array( 104 'all' => pht('All Targets'), 105 ); 106 } 107 108 public function buildSavedQueryFromBuiltin($query_key) { 109 $query = $this->newSavedQuery(); 110 $query->setQueryKey($query_key); 111 112 switch ($query_key) { 113 case 'all': 114 return $query; 115 } 116 117 return parent::buildSavedQueryFromBuiltin($query_key); 118 } 119 120 /** 121 * @param array<HarbormasterBuildTarget> $builds 122 * @param PhabricatorSavedQuery $query 123 * @param array<PhabricatorObjectHandle> $handles 124 */ 125 protected function renderResultList( 126 array $builds, 127 PhabricatorSavedQuery $query, 128 array $handles) { 129 assert_instances_of($builds, HarbormasterBuildTarget::class); 130 131 // Currently, this only supports the "harbormaster.target.search" 132 // API method. 133 throw new PhutilMethodNotImplementedException(); 134 } 135 136}