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');
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
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
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 ?>