Path: blob/master/src/applications/packages/query/PhabricatorPackagesVersionQuery.php
12242 views
<?php12final class PhabricatorPackagesVersionQuery3extends PhabricatorPackagesQuery {45private $ids;6private $phids;7private $packagePHIDs;8private $fullKeys;9private $names;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 withPackagePHIDs(array $phids) {22$this->packagePHIDs = $phids;23return $this;24}2526public function withFullKeys(array $keys) {27$this->fullKeys = $keys;28return $this;29}3031public function withNames(array $names) {32$this->names = $names;33return $this;34}3536public function withNameNgrams($ngrams) {37return $this->withNgramsConstraint(38new PhabricatorPackagesVersionNameNgrams(),39$ngrams);40}4142public function newResultObject() {43return new PhabricatorPackagesVersion();44}4546protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {47$where = parent::buildWhereClauseParts($conn);4849if ($this->ids !== null) {50$where[] = qsprintf(51$conn,52'v.id IN (%Ld)',53$this->ids);54}5556if ($this->phids !== null) {57$where[] = qsprintf(58$conn,59'v.phid IN (%Ls)',60$this->phids);61}6263if ($this->packagePHIDs !== null) {64$where[] = qsprintf(65$conn,66'v.packagePHID IN (%Ls)',67$this->packagePHIDs);68}6970if ($this->names !== null) {71$where[] = qsprintf(72$conn,73'v.name IN (%Ls)',74$this->names);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);89$join_package = ($this->fullKeys !== null) || $join_publisher;9091if ($join_package) {92$package_table = new PhabricatorPackagesPackage();9394$joins[] = qsprintf(95$conn,96'JOIN %T p ON v.packagePHID = p.phid',97$package_table->getTableName());98}99100if ($join_publisher) {101$publisher_table = new PhabricatorPackagesPublisher();102103$joins[] = qsprintf(104$conn,105'JOIN %T u ON u.phid = p.publisherPHID',106$publisher_table->getTableName());107}108109return $joins;110}111112protected function willFilterPage(array $versions) {113$package_phids = mpull($versions, 'getPackagePHID');114115$packages = id(new PhabricatorPackagesPackageQuery())116->setViewer($this->getViewer())117->setParentQuery($this)118->withPHIDs($package_phids)119->execute();120$packages = mpull($packages, null, 'getPHID');121122foreach ($versions as $key => $version) {123$package = idx($packages, $version->getPackagePHID());124125if (!$package) {126unset($versions[$key]);127$this->didRejectResult($version);128continue;129}130131$version->attachPackage($package);132}133134return $versions;135}136137protected function getPrimaryTableAlias() {138return 'v';139}140141142}143144145