[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/phortune/editor/ -> PhortuneCartEditor.php (source)

   1  <?php
   2  
   3  final class PhortuneCartEditor
   4    extends PhabricatorApplicationTransactionEditor {
   5  
   6    public function getEditorApplicationClass() {
   7      return 'PhabricatorPhortuneApplication';
   8    }
   9  
  10    public function getEditorObjectsDescription() {
  11      return pht('Phortune Carts');
  12    }
  13  
  14    public function getTransactionTypes() {
  15      $types = parent::getTransactionTypes();
  16  
  17      $types[] = PhortuneCartTransaction::TYPE_CREATED;
  18      $types[] = PhortuneCartTransaction::TYPE_PURCHASED;
  19      $types[] = PhortuneCartTransaction::TYPE_HOLD;
  20      $types[] = PhortuneCartTransaction::TYPE_REVIEW;
  21      $types[] = PhortuneCartTransaction::TYPE_CANCEL;
  22      $types[] = PhortuneCartTransaction::TYPE_REFUND;
  23  
  24      return $types;
  25    }
  26  
  27    protected function getCustomTransactionOldValue(
  28      PhabricatorLiskDAO $object,
  29      PhabricatorApplicationTransaction $xaction) {
  30  
  31      switch ($xaction->getTransactionType()) {
  32        case PhortuneCartTransaction::TYPE_CREATED:
  33        case PhortuneCartTransaction::TYPE_PURCHASED:
  34        case PhortuneCartTransaction::TYPE_HOLD:
  35        case PhortuneCartTransaction::TYPE_REVIEW:
  36        case PhortuneCartTransaction::TYPE_CANCEL:
  37        case PhortuneCartTransaction::TYPE_REFUND:
  38          return null;
  39      }
  40  
  41      return parent::getCustomTransactionOldValue($object, $xaction);
  42    }
  43  
  44    protected function getCustomTransactionNewValue(
  45      PhabricatorLiskDAO $object,
  46      PhabricatorApplicationTransaction $xaction) {
  47  
  48      switch ($xaction->getTransactionType()) {
  49        case PhortuneCartTransaction::TYPE_CREATED:
  50        case PhortuneCartTransaction::TYPE_PURCHASED:
  51        case PhortuneCartTransaction::TYPE_HOLD:
  52        case PhortuneCartTransaction::TYPE_REVIEW:
  53        case PhortuneCartTransaction::TYPE_CANCEL:
  54        case PhortuneCartTransaction::TYPE_REFUND:
  55          return $xaction->getNewValue();
  56      }
  57  
  58      return parent::getCustomTransactionNewValue($object, $xaction);
  59    }
  60  
  61    protected function applyCustomInternalTransaction(
  62      PhabricatorLiskDAO $object,
  63      PhabricatorApplicationTransaction $xaction) {
  64  
  65      switch ($xaction->getTransactionType()) {
  66        case PhortuneCartTransaction::TYPE_CREATED:
  67        case PhortuneCartTransaction::TYPE_PURCHASED:
  68        case PhortuneCartTransaction::TYPE_HOLD:
  69        case PhortuneCartTransaction::TYPE_REVIEW:
  70        case PhortuneCartTransaction::TYPE_CANCEL:
  71        case PhortuneCartTransaction::TYPE_REFUND:
  72          return;
  73      }
  74  
  75      return parent::applyCustomInternalTransaction($object, $xaction);
  76    }
  77  
  78    protected function applyCustomExternalTransaction(
  79      PhabricatorLiskDAO $object,
  80      PhabricatorApplicationTransaction $xaction) {
  81  
  82      switch ($xaction->getTransactionType()) {
  83        case PhortuneCartTransaction::TYPE_CREATED:
  84        case PhortuneCartTransaction::TYPE_PURCHASED:
  85        case PhortuneCartTransaction::TYPE_HOLD:
  86        case PhortuneCartTransaction::TYPE_REVIEW:
  87        case PhortuneCartTransaction::TYPE_CANCEL:
  88        case PhortuneCartTransaction::TYPE_REFUND:
  89          return;
  90      }
  91  
  92      return parent::applyCustomExternalTransaction($object, $xaction);
  93    }
  94  
  95    protected function shouldSendMail(
  96      PhabricatorLiskDAO $object,
  97      array $xactions) {
  98      return true;
  99    }
 100  
 101    protected function buildMailTemplate(PhabricatorLiskDAO $object) {
 102      $id = $object->getID();
 103      $name = $object->getName();
 104  
 105      return id(new PhabricatorMetaMTAMail())
 106        ->setSubject(pht('Order %d: %s', $id, $name))
 107        ->addHeader('Thread-Topic', pht('Order %s', $id));
 108    }
 109  
 110    protected function buildMailBody(
 111      PhabricatorLiskDAO $object,
 112      array $xactions) {
 113  
 114      $body = parent::buildMailBody($object, $xactions);
 115  
 116      $items = array();
 117      foreach ($object->getPurchases() as $purchase) {
 118        $name = $purchase->getFullDisplayName();
 119        $price = $purchase->getTotalPriceAsCurrency()->formatForDisplay();
 120  
 121        $items[] = "{$name} {$price}";
 122      }
 123  
 124      $body->addTextSection(pht('ORDER CONTENTS'), implode("\n", $items));
 125  
 126      $body->addLinkSection(
 127        pht('ORDER DETAIL'),
 128        PhabricatorEnv::getProductionURI('/phortune/cart/'.$object->getID().'/'));
 129  
 130      return $body;
 131    }
 132  
 133    protected function getMailTo(PhabricatorLiskDAO $object) {
 134      $phids = array();
 135  
 136      // Relaod the cart to pull merchant and account information, in case we
 137      // just created the object.
 138      $cart = id(new PhortuneCartQuery())
 139        ->setViewer($this->requireActor())
 140        ->withPHIDs(array($object->getPHID()))
 141        ->executeOne();
 142  
 143      foreach ($cart->getAccount()->getMemberPHIDs() as $account_member) {
 144        $phids[] = $account_member;
 145      }
 146  
 147      foreach ($cart->getMerchant()->getMemberPHIDs() as $merchant_member) {
 148        $phids[] = $merchant_member;
 149      }
 150  
 151      return $phids;
 152    }
 153  
 154    protected function getMailCC(PhabricatorLiskDAO $object) {
 155      return array();
 156    }
 157  
 158    protected function getMailSubjectPrefix() {
 159      return 'Order';
 160    }
 161  
 162    protected function buildReplyHandler(PhabricatorLiskDAO $object) {
 163      return id(new PhortuneCartReplyHandler())
 164        ->setMailReceiver($object);
 165    }
 166  
 167  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1