Page MenuHomePhabricator

D12358.id29760.diff
No OneTemporary

D12358.id29760.diff

diff --git a/src/applications/differential/query/DifferentialRevisionQuery.php b/src/applications/differential/query/DifferentialRevisionQuery.php
--- a/src/applications/differential/query/DifferentialRevisionQuery.php
+++ b/src/applications/differential/query/DifferentialRevisionQuery.php
@@ -861,14 +861,6 @@
}
}
- private function loadCursorObject($id) {
- $results = id(new DifferentialRevisionQuery())
- ->setViewer($this->getPagingViewer())
- ->withIDs(array((int)$id))
- ->execute();
- return head($results);
- }
-
protected function buildPagingClause(AphrontDatabaseConnection $conn_r) {
$default = parent::buildPagingClause($conn_r);
diff --git a/src/applications/maniphest/query/ManiphestTaskQuery.php b/src/applications/maniphest/query/ManiphestTaskQuery.php
--- a/src/applications/maniphest/query/ManiphestTaskQuery.php
+++ b/src/applications/maniphest/query/ManiphestTaskQuery.php
@@ -949,14 +949,6 @@
return array_mergev($phids);
}
- private function loadCursorObject($id) {
- $results = id(new ManiphestTaskQuery())
- ->setViewer($this->getPagingViewer())
- ->withIDs(array((int)$id))
- ->execute();
- return head($results);
- }
-
protected function getPagingValue($result) {
$id = $result->getID();
diff --git a/src/applications/releeph/query/ReleephProductQuery.php b/src/applications/releeph/query/ReleephProductQuery.php
--- a/src/applications/releeph/query/ReleephProductQuery.php
+++ b/src/applications/releeph/query/ReleephProductQuery.php
@@ -10,7 +10,6 @@
private $needArcanistProjects;
- private $order = 'order-id';
const ORDER_ID = 'order-id';
const ORDER_NAME = 'order-name';
@@ -20,7 +19,16 @@
}
public function setOrder($order) {
- $this->order = $order;
+ switch ($order) {
+ case self::ORDER_ID:
+ $this->setOrderVector(array('id'));
+ break;
+ case self::ORDER_NAME:
+ $this->setOrderVector(array('name'));
+ break;
+ default:
+ throw new Exception(pht('Order "%s" not supported.', $order));
+ }
return $this;
}
@@ -139,31 +147,24 @@
return $this->formatWhereClause($where);
}
- protected function getReversePaging() {
- switch ($this->order) {
- case self::ORDER_NAME:
- return true;
- }
- return parent::getReversePaging();
+ public function getOrderableColumns() {
+ return parent::getOrderableColumns() + array(
+ 'name' => array(
+ 'column' => 'name',
+ 'unique' => true,
+ 'reverse' => true,
+ 'type' => 'string',
+ ),
+ );
}
- protected function getPagingValue($result) {
- switch ($this->order) {
- case self::ORDER_NAME:
- return $result->getName();
- }
- return parent::getPagingValue();
- }
+ protected function getPagingValueMap($cursor, array $keys) {
+ $product = $this->loadCursorObject($cursor);
- protected function getPagingColumn() {
- switch ($this->order) {
- case self::ORDER_NAME:
- return 'name';
- case self::ORDER_ID:
- return parent::getPagingColumn();
- default:
- throw new Exception("Uknown order '{$this->order}'!");
- }
+ return array(
+ 'id' => $product->getID(),
+ 'name' => $product->getName(),
+ );
}
public function getQueryApplicationClass() {
diff --git a/src/applications/repository/query/PhabricatorRepositoryQuery.php b/src/applications/repository/query/PhabricatorRepositoryQuery.php
--- a/src/applications/repository/query/PhabricatorRepositoryQuery.php
+++ b/src/applications/repository/query/PhabricatorRepositoryQuery.php
@@ -340,7 +340,7 @@
return $this->formatOrderClause($conn, $parts);
}
- private function loadCursorObject($id) {
+ protected function loadCursorObject($id) {
$query = id(new PhabricatorRepositoryQuery())
->setViewer($this->getPagingViewer())
->withIDs(array((int)$id));
diff --git a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
--- a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
+++ b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php
@@ -244,6 +244,22 @@
);
}
+ protected function loadCursorObject($cursor) {
+ $query = newv(get_class($this), array())
+ ->setViewer($this->getPagingViewer())
+ ->withIDs(array((int)$cursor));
+
+ $object = $query->executeOne();
+ if (!$object) {
+ throw new Exception(
+ pht(
+ 'Cursor "%s" does not identify a valid object.',
+ $cursor));
+ }
+
+ return $object;
+ }
+
/**
* Simplifies the task of constructing a paging clause across multiple

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 11, 4:33 AM (1 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6709465
Default Alt Text
D12358.id29760.diff (4 KB)

Event Timeline