Path: blob/master/src/applications/harbormaster/query/HarbormasterBuildTargetSearchEngine.php
12256 views
<?php12final class HarbormasterBuildTargetSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Harbormaster Build Targets');7}89public function getApplicationClassName() {10return 'PhabricatorHarbormasterApplication';11}1213public function newQuery() {14return new HarbormasterBuildTargetQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorSearchDatasourceField())20->setLabel(pht('Builds'))21->setKey('buildPHIDs')22->setAliases(array('build', 'builds', 'buildPHID'))23->setDescription(24pht('Search for targets of a given build.'))25->setDatasource(new HarbormasterBuildPlanDatasource()),26id(new PhabricatorSearchDateField())27->setLabel(pht('Created After'))28->setKey('createdStart')29->setDescription(30pht('Search for targets created on or after a particular date.')),31id(new PhabricatorSearchDateField())32->setLabel(pht('Created Before'))33->setKey('createdEnd')34->setDescription(35pht('Search for targets created on or before a particular date.')),36id(new PhabricatorSearchDateField())37->setLabel(pht('Started After'))38->setKey('startedStart')39->setDescription(40pht('Search for targets started on or after a particular date.')),41id(new PhabricatorSearchDateField())42->setLabel(pht('Started Before'))43->setKey('startedEnd')44->setDescription(45pht('Search for targets started on or before a particular date.')),46id(new PhabricatorSearchDateField())47->setLabel(pht('Completed After'))48->setKey('completedStart')49->setDescription(50pht('Search for targets completed on or after a particular date.')),51id(new PhabricatorSearchDateField())52->setLabel(pht('Completed Before'))53->setKey('completedEnd')54->setDescription(55pht('Search for targets completed on or before a particular date.')),56id(new PhabricatorSearchStringListField())57->setLabel(pht('Statuses'))58->setKey('statuses')59->setAliases(array('status'))60->setDescription(61pht('Search for targets with given statuses.')),62);63}6465protected function buildQueryFromParameters(array $map) {66$query = $this->newQuery();6768if ($map['buildPHIDs']) {69$query->withBuildPHIDs($map['buildPHIDs']);70}7172if ($map['createdStart'] !== null || $map['createdEnd'] !== null) {73$query->withDateCreatedBetween(74$map['createdStart'],75$map['createdEnd']);76}7778if ($map['startedStart'] !== null || $map['startedEnd'] !== null) {79$query->withDateStartedBetween(80$map['startedStart'],81$map['startedEnd']);82}8384if ($map['completedStart'] !== null || $map['completedEnd'] !== null) {85$query->withDateCompletedBetween(86$map['completedStart'],87$map['completedEnd']);88}8990if ($map['statuses']) {91$query->withTargetStatuses($map['statuses']);92}9394return $query;95}9697protected function getURI($path) {98return '/harbormaster/target/'.$path;99}100101protected function getBuiltinQueryNames() {102return array(103'all' => pht('All Targets'),104);105}106107public function buildSavedQueryFromBuiltin($query_key) {108$query = $this->newSavedQuery();109$query->setQueryKey($query_key);110111switch ($query_key) {112case 'all':113return $query;114}115116return parent::buildSavedQueryFromBuiltin($query_key);117}118119protected function renderResultList(120array $builds,121PhabricatorSavedQuery $query,122array $handles) {123assert_instances_of($builds, 'HarbormasterBuildTarget');124125// Currently, this only supports the "harbormaster.target.search"126// API method.127throw new PhutilMethodNotImplementedException();128}129130}131132133