Path: blob/master/src/applications/packages/query/PhabricatorPackagesPackageQuery.php
12242 views
<?php12final class PhabricatorPackagesPackageQuery3extends PhabricatorPackagesQuery {45private $ids;6private $phids;7private $publisherPHIDs;8private $packageKeys;9private $fullKeys;1011public function withIDs(array $ids) {12$this->ids = $ids;13return $this;14}1516public function withPHIDs(array $phids) {17$this->phids = $phids;18return $this;19}2021public function withPublisherPHIDs(array $phids) {22$this->publisherPHIDs = $phids;23return $this;24}2526public function withPackageKeys(array $keys) {27$this->packageKeys = $keys;28return $this;29}3031public function withFullKeys(array $keys) {32$this->fullKeys = $keys;33return $this;34}3536public function withNameNgrams($ngrams) {37return $this->withNgramsConstraint(38new PhabricatorPackagesPackageNameNgrams(),39$ngrams);40}4142public function newResultObject() {43return new PhabricatorPackagesPackage();44}4546protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {47$where = parent::buildWhereClauseParts($conn);4849if ($this->ids !== null) {50$where[] = qsprintf(51$conn,52'p.id IN (%Ld)',53$this->ids);54}5556if ($this->phids !== null) {57$where[] = qsprintf(58$conn,59'p.phid IN (%Ls)',60$this->phids);61}6263if ($this->publisherPHIDs !== null) {64$where[] = qsprintf(65$conn,66'p.publisherPHID IN (%Ls)',67$this->publisherPHIDs);68}6970if ($this->packageKeys !== null) {71$where[] = qsprintf(72$conn,73'p.packageKey IN (%Ls)',74$this->packageKeys);75}7677if ($this->fullKeys !== null) {78$parts = $this->buildFullKeyClauseParts($conn, $this->fullKeys);79$where[] = qsprintf($conn, '%Q', $parts);80}8182return $where;83}8485protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) {86$joins = parent::buildJoinClauseParts($conn);8788$join_publisher = ($this->fullKeys !== null);89if ($join_publisher) {90$publisher_table = new PhabricatorPackagesPublisher();9192$joins[] = qsprintf(93$conn,94'JOIN %T u ON u.phid = p.publisherPHID',95$publisher_table->getTableName());96}9798return $joins;99}100101protected function willFilterPage(array $packages) {102$publisher_phids = mpull($packages, 'getPublisherPHID');103104$publishers = id(new PhabricatorPackagesPublisherQuery())105->setViewer($this->getViewer())106->setParentQuery($this)107->withPHIDs($publisher_phids)108->execute();109$publishers = mpull($publishers, null, 'getPHID');110111foreach ($packages as $key => $package) {112$publisher = idx($publishers, $package->getPublisherPHID());113114if (!$publisher) {115unset($packages[$key]);116$this->didRejectResult($package);117continue;118}119120$package->attachPublisher($publisher);121}122123return $packages;124}125126protected function getPrimaryTableAlias() {127return 'p';128}129130}131132133