• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/payment/omp/OMPPaymentManager.inc.php

00001 <?php
00002 
00017 import('classes.payment.omp.OMPQueuedPayment');
00018 import('lib.pkp.classes.payment.PaymentManager');
00019 
00020 define('PAYMENT_TYPE_PURCHASE_FILE',   0x000000001);
00021 
00022 class OMPPaymentManager extends PaymentManager {
00024    var $press;
00025 
00030    function OMPPaymentManager(&$request) {
00031       parent::PaymentManager($request);
00032       $this->press =& $request->getPress();
00033    }
00034 
00039    function isConfigured() {
00040       return parent::isConfigured() && $this->press && $this->press->getSetting('pressCurrency');
00041    }
00042 
00053    function &createQueuedPayment($pressId, $type, $userId, $assocId, $amount, $currencyCode = null) {
00054       $pressDao =& DAORegistry::getDAO('PressDAO');
00055       $press =& $pressDao->getById($pressId);
00056       assert($press);
00057       $payment = new OMPQueuedPayment($amount, $press->getSetting('pressCurrency'), $userId, $assocId);
00058       $payment->setPressId($pressId);
00059       $payment->setType($type);
00060 
00061       switch ($type) {
00062          case PAYMENT_TYPE_PURCHASE_FILE:
00063             $submissionFileDao =& DAORegistry::getDAO('SubmissionFileDAO');
00064             list($fileId, $revision) = array_map(create_function('$a', 'return (int) $a;'), explode('-', $assocId));
00065             import('classes.monograph.MonographFile'); // const
00066             $submissionFile =& $submissionFileDao->getRevision($fileId, $revision, MONOGRAPH_FILE_PROOF);
00067             assert($submissionFile);
00068             $payment->setRequestUrl($this->request->url(null, 'catalog', 'download', array(
00069                $submissionFile->getSubmissionId(),
00070                $submissionFile->getAssocId(),
00071                $assocId
00072             )));
00073             break;
00074          default:
00075             // Invalid payment type.
00076             assert(false);
00077             break;
00078       }
00079 
00080       return $payment;
00081    }
00082 
00088    function &getPaymentPlugin() {
00089       $paymentMethodPluginName = $this->press->getSetting('paymentPluginName');
00090       $paymentMethodPlugin = null;
00091       if (!empty($paymentMethodPluginName)) {
00092          $plugins =& PluginRegistry::loadCategory('paymethod');
00093          if (isset($plugins[$paymentMethodPluginName])) $paymentMethodPlugin =& $plugins[$paymentMethodPluginName];
00094       }
00095       return $paymentMethodPlugin;
00096    }
00097 
00104    function fulfillQueuedPayment(&$queuedPayment, $payMethodPluginName = null) {
00105       $returner = false;
00106       if ($queuedPayment) switch ($queuedPayment->getType()) {
00107          case PAYMENT_TYPE_PURCHASE_FILE:
00108             $returner = true;
00109             break;
00110          default:
00111             // Invalid payment type
00112             assert(false);
00113       }
00114 
00115       $ompCompletedPaymentDao =& DAORegistry::getDAO('OMPCompletedPaymentDAO');
00116       $completedPayment =& $this->createCompletedPayment($queuedPayment, $payMethodPluginName);
00117       $ompCompletedPaymentDao->insertCompletedPayment($completedPayment);
00118 
00119       $queuedPaymentDao =& DAORegistry::getDAO('QueuedPaymentDAO');
00120       $queuedPaymentDao->deleteQueuedPayment($queuedPayment->getId());
00121 
00122       return $returner;
00123    }
00124 
00131    function &createCompletedPayment($queuedPayment, $payMethod) {
00132       import('classes.payment.omp.OMPCompletedPayment');
00133       $payment = new OMPCompletedPayment();
00134       $payment->setPressId($queuedPayment->getPressId());
00135       $payment->setType($queuedPayment->getType());
00136       $payment->setAmount($queuedPayment->getAmount());
00137       $payment->setCurrencyCode($queuedPayment->getCurrencyCode());
00138       $payment->setUserId($queuedPayment->getUserId());
00139       $payment->setAssocId($queuedPayment->getAssocId());
00140       $payment->setPayMethodPluginName($payMethod);
00141 
00142       return $payment;
00143    }
00144 
00145 }
00146 
00147 ?>

Generated on Mon Sep 17 2012 13:00:00 for Open Monograph Press by  doxygen 1.7.1