From 301750f6e692ac1549ebd61135f9d32b041cfc49 Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 7 Jul 2017 16:33:45 -0700 Subject: [PATCH] Add an after-purchase hook to subscriptions in Phortune Summary: Ref T12681. We need this to update the "paid until" window on support pacts. (Instance billing doesn't use this because everything just checks if you have unpaid invoices, nothing actually happens when you pay them.) Test Plan: See D18187. Reviewers: chad, amckinley Reviewed By: chad Maniphest Tasks: T12681 Differential Revision: https://secure.phabricator.com/D18188 --- .../phortune/product/PhortuneSubscriptionProduct.php | 5 +++-- .../phortune/storage/PhortuneSubscription.php | 9 +++++++++ .../subscription/PhortuneSubscriptionImplementation.php | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/applications/phortune/product/PhortuneSubscriptionProduct.php b/src/applications/phortune/product/PhortuneSubscriptionProduct.php index b63cc7c21c..85eb2999c7 100644 --- a/src/applications/phortune/product/PhortuneSubscriptionProduct.php +++ b/src/applications/phortune/product/PhortuneSubscriptionProduct.php @@ -50,8 +50,9 @@ final class PhortuneSubscriptionProduct public function didPurchaseProduct( PhortuneProduct $product, PhortunePurchase $purchase) { - // TODO: Callback the subscription. - return; + return $this->getSubscription()->didPurchaseProduct( + $product, + $purchase); } public function didRefundProduct( diff --git a/src/applications/phortune/storage/PhortuneSubscription.php b/src/applications/phortune/storage/PhortuneSubscription.php index cc839adbea..a996dbf5d2 100644 --- a/src/applications/phortune/storage/PhortuneSubscription.php +++ b/src/applications/phortune/storage/PhortuneSubscription.php @@ -232,6 +232,15 @@ final class PhortuneSubscription extends PhortuneDAO $purchase); } + public function didPurchaseProduct( + PhortuneProduct $product, + PhortunePurchase $purchase) { + return $this->getImplementation()->didPurchaseProduct( + $this, + $product, + $purchase); + } + /* -( PhabricatorPolicyInterface )----------------------------------------- */ diff --git a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php index f8cbc21155..a337551c8d 100644 --- a/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php +++ b/src/applications/phortune/subscription/PhortuneSubscriptionImplementation.php @@ -48,4 +48,12 @@ abstract class PhortuneSubscriptionImplementation extends Phobject { PhortunePurchase $purchase) { return null; } + + public function didPurchaseProduct( + PhortuneSubscription $subscription, + PhortuneProduct $product, + PhortunePurchase $purchase) { + return null; + } + }