Path: blob/master/src/applications/fund/query/FundBackerQuery.php
12256 views
<?php12final class FundBackerQuery3extends PhabricatorCursorPagedPolicyAwareQuery {45private $ids;6private $phids;7private $statuses;89private $initiativePHIDs;10private $backerPHIDs;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 withInitiativePHIDs(array $phids) {28$this->initiativePHIDs = $phids;29return $this;30}3132public function withBackerPHIDs(array $phids) {33$this->backerPHIDs = $phids;34return $this;35}3637protected function loadPage() {38$table = new FundBacker();39$conn_r = $table->establishConnection('r');4041$rows = queryfx_all(42$conn_r,43'SELECT * FROM %T %Q %Q %Q',44$table->getTableName(),45$this->buildWhereClause($conn_r),46$this->buildOrderClause($conn_r),47$this->buildLimitClause($conn_r));4849return $table->loadAllFromArray($rows);50}5152protected function willFilterPage(array $backers) {53$initiative_phids = mpull($backers, 'getInitiativePHID');54$initiatives = id(new PhabricatorObjectQuery())55->setParentQuery($this)56->setViewer($this->getViewer())57->withPHIDs($initiative_phids)58->execute();59$initiatives = mpull($initiatives, null, 'getPHID');6061foreach ($backers as $backer) {62$initiative_phid = $backer->getInitiativePHID();63$initiative = idx($initiatives, $initiative_phid);64$backer->attachInitiative($initiative);65}6667return $backers;68}6970protected function buildWhereClause(AphrontDatabaseConnection $conn) {71$where = array();7273$where[] = $this->buildPagingClause($conn);7475if ($this->ids !== null) {76$where[] = qsprintf(77$conn,78'id IN (%Ld)',79$this->ids);80}8182if ($this->phids !== null) {83$where[] = qsprintf(84$conn,85'phid IN (%Ls)',86$this->phids);87}8889if ($this->initiativePHIDs !== null) {90$where[] = qsprintf(91$conn,92'initiativePHID IN (%Ls)',93$this->initiativePHIDs);94}9596if ($this->backerPHIDs !== null) {97$where[] = qsprintf(98$conn,99'backerPHID IN (%Ls)',100$this->backerPHIDs);101}102103if ($this->statuses !== null) {104$where[] = qsprintf(105$conn,106'status IN (%Ls)',107$this->statuses);108}109110return $this->formatWhereClause($conn, $where);111}112113public function getQueryApplicationClass() {114return 'PhabricatorFundApplication';115}116117}118119120