Page MenuHomePhabricator

D19020.diff
No OneTemporary

D19020.diff

diff --git a/src/applications/phortune/query/PhortunePaymentMethodQuery.php b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
--- a/src/applications/phortune/query/PhortunePaymentMethodQuery.php
+++ b/src/applications/phortune/query/PhortunePaymentMethodQuery.php
@@ -34,19 +34,12 @@
return $this;
}
+ public function newResultObject() {
+ return new PhortunePaymentMethod();
+ }
+
protected function loadPage() {
- $table = new PhortunePaymentMethod();
- $conn = $table->establishConnection('r');
-
- $rows = queryfx_all(
- $conn,
- 'SELECT * FROM %T %Q %Q %Q',
- $table->getTableName(),
- $this->buildWhereClause($conn),
- $this->buildOrderClause($conn),
- $this->buildLimitClause($conn));
-
- return $table->loadAllFromArray($rows);
+ return $this->loadStandardPage($this->newResultObject());
}
protected function willFilterPage(array $methods) {
@@ -106,8 +99,8 @@
return $methods;
}
- protected function buildWhereClause(AphrontDatabaseConnection $conn) {
- $where = array();
+ protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
+ $where = parent::buildWhereClauseParts($conn);
if ($this->ids !== null) {
$where[] = qsprintf(
@@ -144,9 +137,7 @@
$this->statuses);
}
- $where[] = $this->buildPagingClause($conn);
-
- return $this->formatWhereClause($where);
+ return $where;
}
public function getQueryApplicationClass() {
diff --git a/src/applications/phortune/storage/PhortuneCart.php b/src/applications/phortune/storage/PhortuneCart.php
--- a/src/applications/phortune/storage/PhortuneCart.php
+++ b/src/applications/phortune/storage/PhortuneCart.php
@@ -118,6 +118,13 @@
->setAmountAsCurrency($this->getTotalPriceAsCurrency());
if ($method) {
+ if (!$method->isActive()) {
+ throw new Exception(
+ pht(
+ 'Attempting to apply a charge using an inactive '.
+ 'payment method ("%s")!',
+ $method->getPHID()));
+ }
$charge->setPaymentMethodPHID($method->getPHID());
}
diff --git a/src/applications/phortune/storage/PhortunePaymentMethod.php b/src/applications/phortune/storage/PhortunePaymentMethod.php
--- a/src/applications/phortune/storage/PhortunePaymentMethod.php
+++ b/src/applications/phortune/storage/PhortunePaymentMethod.php
@@ -128,6 +128,10 @@
return $month.'/'.$year;
}
+ public function isActive() {
+ return ($this->getStatus() === self::STATUS_ACTIVE);
+ }
+
/* -( PhabricatorPolicyInterface )----------------------------------------- */
diff --git a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
--- a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
+++ b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
@@ -141,6 +141,10 @@
$method = id(new PhortunePaymentMethodQuery())
->setViewer($viewer)
->withPHIDs(array($subscription->getDefaultPaymentMethodPHID()))
+ ->withStatuses(
+ array(
+ PhortunePaymentMethod::STATUS_ACTIVE,
+ ))
->executeOne();
if (!$method) {
$issues[] = pht(

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 7:34 PM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6275656
Default Alt Text
D19020.diff (3 KB)

Event Timeline