Summary: Ref T8116. A package has: - a publisher (like "Phacility"), from the previous revision; - a name (like "Arcanist"); - a package key (like "arcanist"). The package key is immutable, like the publisher key. This gives a package a full key like "phacility/arcanist". Policy stuff: - You must be able to view a publisher to view a package (currently, everyone can always see all publishers). - You must be able to edit a publisher to create a new package inside it. - Packages have separate view/edit permissions. This still does nothing interesting. Test Plan: {F1731663} Reviewers: chad Reviewed By: chad Subscribers: eadler Maniphest Tasks: T8116 Differential Revision: https://secure.phabricator.com/D16315
61 lines
1.2 KiB
PHP
61 lines
1.2 KiB
PHP
<?php
|
|
|
|
final class PhabricatorPackagesPublisherQuery
|
|
extends PhabricatorPackagesQuery {
|
|
|
|
private $ids;
|
|
private $phids;
|
|
private $publisherKeys;
|
|
|
|
public function withIDs(array $ids) {
|
|
$this->ids = $ids;
|
|
return $this;
|
|
}
|
|
|
|
public function withPHIDs(array $phids) {
|
|
$this->phids = $phids;
|
|
return $this;
|
|
}
|
|
|
|
public function withPublisherKeys(array $keys) {
|
|
$this->publisherKeys = $keys;
|
|
return $this;
|
|
}
|
|
|
|
public function newResultObject() {
|
|
return new PhabricatorPackagesPublisher();
|
|
}
|
|
|
|
protected function loadPage() {
|
|
return $this->loadStandardPage($this->newResultObject());
|
|
}
|
|
|
|
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
|
|
$where = parent::buildWhereClauseParts($conn);
|
|
|
|
if ($this->ids !== null) {
|
|
$where[] = qsprintf(
|
|
$conn,
|
|
'id IN (%Ld)',
|
|
$this->ids);
|
|
}
|
|
|
|
if ($this->phids !== null) {
|
|
$where[] = qsprintf(
|
|
$conn,
|
|
'phid IN (%Ls)',
|
|
$this->phids);
|
|
}
|
|
|
|
if ($this->publisherKeys !== null) {
|
|
$where[] = qsprintf(
|
|
$conn,
|
|
'publisherKey IN (%Ls)',
|
|
$this->publisherKeys);
|
|
}
|
|
|
|
return $where;
|
|
}
|
|
|
|
}
|