Path: blob/master/src/applications/harbormaster/query/HarbormasterBuildArtifactQuery.php
12256 views
<?php12final class HarbormasterBuildArtifactQuery3extends PhabricatorCursorPagedPolicyAwareQuery {45private $ids;6private $buildTargetPHIDs;7private $artifactTypes;8private $artifactIndexes;9private $keyBuildPHID;10private $keyBuildGeneration;11private $isReleased;1213public function withIDs(array $ids) {14$this->ids = $ids;15return $this;16}1718public function withBuildTargetPHIDs(array $build_target_phids) {19$this->buildTargetPHIDs = $build_target_phids;20return $this;21}2223public function withArtifactTypes(array $artifact_types) {24$this->artifactTypes = $artifact_types;25return $this;26}2728public function withArtifactIndexes(array $artifact_indexes) {29$this->artifactIndexes = $artifact_indexes;30return $this;31}3233public function withIsReleased($released) {34$this->isReleased = $released;35return $this;36}3738public function newResultObject() {39return new HarbormasterBuildArtifact();40}4142protected function willFilterPage(array $page) {43$build_targets = array();4445$build_target_phids = array_filter(mpull($page, 'getBuildTargetPHID'));46if ($build_target_phids) {47$build_targets = id(new HarbormasterBuildTargetQuery())48->setViewer($this->getViewer())49->withPHIDs($build_target_phids)50->setParentQuery($this)51->execute();52$build_targets = mpull($build_targets, null, 'getPHID');53}5455foreach ($page as $key => $build_log) {56$build_target_phid = $build_log->getBuildTargetPHID();57if (empty($build_targets[$build_target_phid])) {58unset($page[$key]);59continue;60}61$build_log->attachBuildTarget($build_targets[$build_target_phid]);62}6364return $page;65}6667protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {68$where = parent::buildWhereClauseParts($conn);6970if ($this->ids !== null) {71$where[] = qsprintf(72$conn,73'id IN (%Ld)',74$this->ids);75}7677if ($this->buildTargetPHIDs !== null) {78$where[] = qsprintf(79$conn,80'buildTargetPHID IN (%Ls)',81$this->buildTargetPHIDs);82}8384if ($this->artifactTypes !== null) {85$where[] = qsprintf(86$conn,87'artifactType in (%Ls)',88$this->artifactTypes);89}9091if ($this->artifactIndexes !== null) {92$where[] = qsprintf(93$conn,94'artifactIndex IN (%Ls)',95$this->artifactIndexes);96}9798if ($this->isReleased !== null) {99$where[] = qsprintf(100$conn,101'isReleased = %d',102(int)$this->isReleased);103}104105return $where;106}107108public function getQueryApplicationClass() {109return 'PhabricatorHarbormasterApplication';110}111112}113114115