Path: blob/master/src/applications/harbormaster/query/HarbormasterBuildPlanQuery.php
12256 views
<?php12final class HarbormasterBuildPlanQuery3extends PhabricatorCursorPagedPolicyAwareQuery {45private $ids;6private $phids;7private $statuses;8private $datasourceQuery;9private $planAutoKeys;10private $needBuildSteps;1112public function withIDs(array $ids) {13$this->ids = $ids;14return $this;15}1617public function withPHIDs(array $phids) {18$this->phids = $phids;19return $this;20}2122public function withStatuses(array $statuses) {23$this->statuses = $statuses;24return $this;25}2627public function withDatasourceQuery($query) {28$this->datasourceQuery = $query;29return $this;30}3132public function withPlanAutoKeys(array $keys) {33$this->planAutoKeys = $keys;34return $this;35}3637public function withNameNgrams($ngrams) {38return $this->withNgramsConstraint(39new HarbormasterBuildPlanNameNgrams(),40$ngrams);41}4243public function needBuildSteps($need) {44$this->needBuildSteps = $need;45return $this;46}4748public function newResultObject() {49return new HarbormasterBuildPlan();50}5152protected function didFilterPage(array $page) {53if ($this->needBuildSteps) {54$plan_phids = mpull($page, 'getPHID');5556$steps = id(new HarbormasterBuildStepQuery())57->setParentQuery($this)58->setViewer($this->getViewer())59->withBuildPlanPHIDs($plan_phids)60->execute();61$steps = mgroup($steps, 'getBuildPlanPHID');6263foreach ($page as $plan) {64$plan_steps = idx($steps, $plan->getPHID(), array());65$plan->attachBuildSteps($plan_steps);66}67}6869return $page;70}7172protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {73$where = parent::buildWhereClauseParts($conn);7475if ($this->ids !== null) {76$where[] = qsprintf(77$conn,78'plan.id IN (%Ld)',79$this->ids);80}8182if ($this->phids !== null) {83$where[] = qsprintf(84$conn,85'plan.phid IN (%Ls)',86$this->phids);87}8889if ($this->statuses !== null) {90$where[] = qsprintf(91$conn,92'plan.planStatus IN (%Ls)',93$this->statuses);94}9596if (!phutil_nonempty_string($this->datasourceQuery)) {97$where[] = qsprintf(98$conn,99'plan.name LIKE %>',100$this->datasourceQuery);101}102103if ($this->planAutoKeys !== null) {104$where[] = qsprintf(105$conn,106'plan.planAutoKey IN (%Ls)',107$this->planAutoKeys);108}109110return $where;111}112113protected function getPrimaryTableAlias() {114return 'plan';115}116117public function getQueryApplicationClass() {118return 'PhabricatorHarbormasterApplication';119}120121public function getOrderableColumns() {122return parent::getOrderableColumns() + array(123'name' => array(124'column' => 'name',125'type' => 'string',126'reverse' => true,127),128);129}130131protected function newPagingMapFromPartialObject($object) {132return array(133'id' => (int)$object->getID(),134'name' => $object->getName(),135);136}137138public function getBuiltinOrders() {139return array(140'name' => array(141'vector' => array('name', 'id'),142'name' => pht('Name'),143),144) + parent::getBuiltinOrders();145}146147}148149150