Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php b/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php
index 793187c404..cbd434c900 100644
--- a/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php
+++ b/src/applications/phortune/controller/cart/PhortuneCartCheckoutController.php
@@ -1,238 +1,234 @@
<?php
final class PhortuneCartCheckoutController
extends PhortuneCartController {
protected function shouldRequireAccountAuthority() {
return true;
}
protected function shouldRequireMerchantAuthority() {
return false;
}
protected function handleCartRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
$cart = $this->getCart();
$cancel_uri = $cart->getCancelURI();
$merchant = $cart->getMerchant();
switch ($cart->getStatus()) {
case PhortuneCart::STATUS_BUILDING:
return $this->newDialog()
->setTitle(pht('Incomplete Cart'))
->appendParagraph(
pht(
'The application that created this cart did not finish putting '.
'products in it. You can not checkout with an incomplete '.
'cart.'))
->addCancelButton($cancel_uri);
case PhortuneCart::STATUS_READY:
// This is the expected, normal state for a cart that's ready for
// checkout.
break;
case PhortuneCart::STATUS_CHARGED:
case PhortuneCart::STATUS_PURCHASING:
case PhortuneCart::STATUS_HOLD:
case PhortuneCart::STATUS_REVIEW:
case PhortuneCart::STATUS_PURCHASED:
// For these states, kick the user to the order page to give them
// information and options.
return id(new AphrontRedirectResponse())->setURI($cart->getDetailURI());
default:
throw new Exception(
pht(
'Unknown cart status "%s"!',
$cart->getStatus()));
}
$account = $cart->getAccount();
$account_uri = $this->getApplicationURI($account->getID().'/');
$methods = id(new PhortunePaymentMethodQuery())
->setViewer($viewer)
->withAccountPHIDs(array($account->getPHID()))
->withMerchantPHIDs(array($merchant->getPHID()))
->withStatuses(array(PhortunePaymentMethod::STATUS_ACTIVE))
->execute();
$e_method = null;
$errors = array();
if ($request->isFormPost()) {
// Require CAN_EDIT on the cart to actually make purchases.
PhabricatorPolicyFilter::requireCapability(
$viewer,
$cart,
PhabricatorPolicyCapability::CAN_EDIT);
$method_id = $request->getInt('paymentMethodID');
$method = idx($methods, $method_id);
if (!$method) {
$e_method = pht('Required');
$errors[] = pht('You must choose a payment method.');
}
if (!$errors) {
$provider = $method->buildPaymentProvider();
$charge = $cart->willApplyCharge($viewer, $provider, $method);
try {
$provider->applyCharge($method, $charge);
} catch (Exception $ex) {
$cart->didFailCharge($charge);
return $this->newDialog()
->setTitle(pht('Charge Failed'))
->appendParagraph(
pht(
'Unable to make payment: %s',
$ex->getMessage()))
->addCancelButton($cart->getCheckoutURI(), pht('Continue'));
}
$cart->didApplyCharge($charge);
$done_uri = $cart->getCheckoutURI();
return id(new AphrontRedirectResponse())->setURI($done_uri);
}
}
- $cart_table = $this->buildCartContentTable($cart);
-
- $cart_box = id(new PHUIObjectBoxView())
- ->setFormErrors($errors)
- ->setHeaderText(pht('Cart Contents'))
- ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->setTable($cart_table);
+ $cart_box = id(new PhortuneOrderItemsView())
+ ->setViewer($viewer)
+ ->setOrder($cart);
$title = $cart->getName();
if (!$methods) {
$method_control = id(new AphrontFormStaticControl())
->setLabel(pht('Payment Method'))
->setValue(
phutil_tag('em', array(), pht('No payment methods configured.')));
} else {
$method_control = id(new AphrontFormRadioButtonControl())
->setLabel(pht('Payment Method'))
->setName('paymentMethodID')
->setValue($request->getInt('paymentMethodID'));
foreach ($methods as $method) {
$method_control->addButton(
$method->getID(),
$method->getFullDisplayName(),
$method->getDescription());
}
}
$method_control->setError($e_method);
$account_id = $account->getID();
$params = array(
'merchantID' => $merchant->getID(),
'cartID' => $cart->getID(),
);
$payment_method_uri = urisprintf(
'account/%d/methods/new/',
$account->getID());
$payment_method_uri = $this->getApplicationURI($payment_method_uri);
$payment_method_uri = new PhutilURI($payment_method_uri, $params);
$form = id(new AphrontFormView())
->setUser($viewer)
->appendChild($method_control);
$add_providers = $this->loadCreatePaymentMethodProvidersForMerchant(
$merchant);
if ($add_providers) {
$new_method = javelin_tag(
'a',
array(
'class' => 'button button-grey',
'href' => $payment_method_uri,
),
pht('Add New Payment Method'));
$form->appendChild(
id(new AphrontFormMarkupControl())
->setValue($new_method));
}
if ($methods || $add_providers) {
$submit = id(new AphrontFormSubmitControl())
->setValue(pht('Submit Payment'))
->setDisabled(!$methods);
if ($cart->getCancelURI() !== null) {
$submit->addCancelButton($cart->getCancelURI());
}
$form->appendChild($submit);
}
$provider_form = null;
$pay_providers = $this->loadOneTimePaymentProvidersForMerchant($merchant);
if ($pay_providers) {
$one_time_options = array();
foreach ($pay_providers as $provider) {
$one_time_options[] = $provider->renderOneTimePaymentButton(
$account,
$cart,
$viewer);
}
$one_time_options = phutil_tag(
'div',
array(
'class' => 'phortune-payment-onetime-list',
),
$one_time_options);
$provider_form = new PHUIFormLayoutView();
$provider_form->appendChild(
id(new AphrontFormMarkupControl())
->setLabel(pht('Pay With'))
->setValue($one_time_options));
}
$payment_box = id(new PHUIObjectBoxView())
->setHeaderText(pht('Choose Payment Method'))
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->appendChild($form)
->appendChild($provider_form);
$description_view = id(new PhortuneOrderDescriptionView())
->setViewer($viewer)
->setOrder($cart);
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('Checkout'));
$crumbs->addTextCrumb($title);
$crumbs->setBorder(true);
$header = id(new PHUIHeaderView())
->setHeader($title)
->setHeaderIcon('fa-shopping-cart');
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setFooter(
array(
$description_view,
$cart_box,
$payment_box,
));
return $this->newPage()
->setTitle($title)
->setCrumbs($crumbs)
->appendChild($view);
}
}
diff --git a/src/applications/phortune/phid/PhortuneAccountPHIDType.php b/src/applications/phortune/phid/PhortuneAccountPHIDType.php
index cf5f5d06f2..90632a980d 100644
--- a/src/applications/phortune/phid/PhortuneAccountPHIDType.php
+++ b/src/applications/phortune/phid/PhortuneAccountPHIDType.php
@@ -1,42 +1,41 @@
<?php
final class PhortuneAccountPHIDType extends PhabricatorPHIDType {
const TYPECONST = 'ACNT';
public function getTypeName() {
return pht('Phortune Account');
}
public function newObject() {
return new PhortuneAccount();
}
public function getPHIDTypeApplicationClass() {
return 'PhabricatorPhortuneApplication';
}
protected function buildQueryForObjects(
PhabricatorObjectQuery $query,
array $phids) {
return id(new PhortuneAccountQuery())
->withPHIDs($phids);
}
public function loadHandles(
PhabricatorHandleQuery $query,
array $handles,
array $objects) {
foreach ($handles as $phid => $handle) {
$account = $objects[$phid];
- $id = $account->getID();
-
- $handle->setName($account->getName());
- $handle->setURI("/phortune/{$id}/");
+ $handle
+ ->setName($account->getName())
+ ->setURI($account->getURI());
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jul 27, 2:17 PM (1 w, 5 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
184784
Default Alt Text
(8 KB)

Event Timeline