mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-08 10:24:48 +01:00
Summary: Use `PhutilInvalidStateException`. Depends on D12803. Test Plan: Unit tests pass. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Differential Revision: https://secure.phabricator.com/D12829
88 lines
2.1 KiB
PHP
88 lines
2.1 KiB
PHP
<?php
|
|
|
|
final class PhortuneSubscriptionCart
|
|
extends PhortuneCartImplementation {
|
|
|
|
private $subscriptionPHID;
|
|
private $subscription;
|
|
|
|
public function setSubscriptionPHID($subscription_phid) {
|
|
$this->subscriptionPHID = $subscription_phid;
|
|
return $this;
|
|
}
|
|
|
|
public function getSubscriptionPHID() {
|
|
return $this->subscriptionPHID;
|
|
}
|
|
|
|
public function setSubscription(PhortuneSubscription $subscription) {
|
|
$this->subscription = $subscription;
|
|
return $this;
|
|
}
|
|
|
|
public function getSubscription() {
|
|
return $this->subscription;
|
|
}
|
|
|
|
public function getName(PhortuneCart $cart) {
|
|
return $this->getSubscription()->getCartName($cart);
|
|
}
|
|
|
|
public function willCreateCart(
|
|
PhabricatorUser $viewer,
|
|
PhortuneCart $cart) {
|
|
|
|
$subscription = $this->getSubscription();
|
|
if (!$subscription) {
|
|
throw new PhutilInvalidStateException('setSubscription');
|
|
}
|
|
|
|
$cart->setMetadataValue('subscriptionPHID', $subscription->getPHID());
|
|
}
|
|
|
|
public function loadImplementationsForCarts(
|
|
PhabricatorUser $viewer,
|
|
array $carts) {
|
|
|
|
$phids = array();
|
|
foreach ($carts as $cart) {
|
|
$phids[] = $cart->getMetadataValue('subscriptionPHID');
|
|
}
|
|
|
|
$subscriptions = id(new PhortuneSubscriptionQuery())
|
|
->setViewer($viewer)
|
|
->withPHIDs($phids)
|
|
->execute();
|
|
$subscriptions = mpull($subscriptions, null, 'getPHID');
|
|
|
|
$objects = array();
|
|
foreach ($carts as $key => $cart) {
|
|
$subscription_phid = $cart->getMetadataValue('subscriptionPHID');
|
|
$subscription = idx($subscriptions, $subscription_phid);
|
|
if (!$subscription) {
|
|
continue;
|
|
}
|
|
|
|
$object = id(new PhortuneSubscriptionCart())
|
|
->setSubscriptionPHID($subscription_phid)
|
|
->setSubscription($subscription);
|
|
|
|
$objects[$key] = $object;
|
|
}
|
|
|
|
return $objects;
|
|
}
|
|
|
|
public function getCancelURI(PhortuneCart $cart) {
|
|
return $this->getSubscription()->getURI();
|
|
}
|
|
|
|
public function getDoneURI(PhortuneCart $cart) {
|
|
return $this->getSubscription()->getURI();
|
|
}
|
|
|
|
public function getDoneActionName(PhortuneCart $cart) {
|
|
return pht('Return to Subscription');
|
|
}
|
|
|
|
}
|