Open Monograph Press  3.3.0
OMPPaymentManager.inc.php
1 <?php
2 
18 import('lib.pkp.classes.payment.QueuedPayment');
19 import('lib.pkp.classes.payment.PaymentManager');
20 import('lib.pkp.classes.submission.SubmissionFile');
21 
22 define('PAYMENT_TYPE_PURCHASE_FILE', 0x000000001);
23 
29  function isConfigured() {
30  return parent::isConfigured() && $this->_context && $this->_context->getData('currency');
31  }
32 
43  function createQueuedPayment($request, $type, $userId, $assocId, $amount, $currencyCode = null) {
44  $payment = new QueuedPayment($amount, $this->_context->getData('currency'), $userId, $assocId);
45  $payment->setContextId($this->_context->getId());
46  $payment->setType($type);
47 
48  switch ($type) {
49  case PAYMENT_TYPE_PURCHASE_FILE:
50  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
51  list($fileId, $revision) = array_map(function($a) {
52  return (int) $a;
53  }, explode('-', $assocId));
54  import('lib.pkp.classes.submission.SubmissionFile'); // const
55  $submissionFile = $submissionFileDao->getRevision($fileId, $revision, SUBMISSION_FILE_PROOF);
56  assert($submissionFile);
57  $payment->setRequestUrl($request->url(null, 'catalog', 'view', array(
58  $submissionFile->getSubmissionId(),
59  $submissionFile->getAssocId(),
60  $assocId
61  )));
62  break;
63  default:
64  // Invalid payment type.
65  assert(false);
66  break;
67  }
68 
69  return $payment;
70  }
71 
76  function getPaymentPlugin() {
77  $paymentMethodPluginName = $this->_context->getData('paymentPluginName');
78  $paymentMethodPlugin = null;
79  if (!empty($paymentMethodPluginName)) {
80  $plugins = PluginRegistry::loadCategory('paymethod');
81  if (isset($plugins[$paymentMethodPluginName])) $paymentMethodPlugin = $plugins[$paymentMethodPluginName];
82  }
83  return $paymentMethodPlugin;
84  }
85 
93  function fulfillQueuedPayment($request, $queuedPayment, $payMethodPluginName = null) {
94  $returner = false;
95  if ($queuedPayment) switch ($queuedPayment->getType()) {
96  case PAYMENT_TYPE_PURCHASE_FILE:
97  $returner = true;
98  break;
99  default:
100  // Invalid payment type
101  assert(false);
102  }
103 
104  $ompCompletedPaymentDao = DAORegistry::getDAO('OMPCompletedPaymentDAO'); /* @var $ompCompletedPaymentDao OMPCompletedPaymentDAO */
105  $completedPayment = $this->createCompletedPayment($queuedPayment, $payMethodPluginName);
106  $ompCompletedPaymentDao->insertCompletedPayment($completedPayment);
107 
108  $queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /* @var $queuedPaymentDao QueuedPaymentDAO */
109  $queuedPaymentDao->deleteById($queuedPayment->getId());
110 
111  return $returner;
112  }
113 
120  function createCompletedPayment($queuedPayment, $payMethod) {
121  import('lib.pkp.classes.payment.CompletedPayment');
122  $payment = new CompletedPayment();
123  $payment->setContextId($queuedPayment->getContextId());
124  $payment->setType($queuedPayment->getType());
125  $payment->setAmount($queuedPayment->getAmount());
126  $payment->setCurrencyCode($queuedPayment->getCurrencyCode());
127  $payment->setUserId($queuedPayment->getUserId());
128  $payment->setAssocId($queuedPayment->getAssocId());
129  $payment->setPayMethodPluginName($payMethod);
130 
131  return $payment;
132  }
133 
138  function getPaymentName($payment) {
139  switch ($payment->getType()) {
140  case PAYMENT_TYPE_PURCHASE_FILE:
141  list($fileId, $revision) = explode('-', $payment->getAssocId());
142  assert($fileId && $revision);
143  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
144  $submissionFile = $submissionFileDao->getRevision($fileId, $revision, SUBMISSION_FILE_PROOF);
145  if (!$submissionFile || $submissionFile->getAssocType() !== ASSOC_TYPE_PUBLICATION_FORMAT) return false;
146 
147  return $submissionFile->getLocalizedName();
148  default:
149  // Invalid payment type
150  assert(false);
151  }
152  }
153 }
154 
155 
QueuedPayment
Queued (unfulfilled) payment data structure.
Definition: QueuedPayment.inc.php:20
OMPPaymentManager\isConfigured
isConfigured()
Definition: OMPPaymentManager.inc.php:29
OMPPaymentManager\getPaymentName
getPaymentName($payment)
Definition: OMPPaymentManager.inc.php:138
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
OMPPaymentManager\fulfillQueuedPayment
fulfillQueuedPayment($request, $queuedPayment, $payMethodPluginName=null)
Definition: OMPPaymentManager.inc.php:93
OMPPaymentManager
Provides payment management functions.
Definition: OMPPaymentManager.inc.php:24
OMPPaymentManager\getPaymentPlugin
getPaymentPlugin()
Definition: OMPPaymentManager.inc.php:76
PluginRegistry\loadCategory
static loadCategory($category, $enabledOnly=false, $mainContextId=null)
Definition: PluginRegistry.inc.php:103
PaymentManager
Provides payment management functions.
Definition: PaymentManager.inc.php:18
CompletedPayment
Class describing a completed payment.
Definition: CompletedPayment.inc.php:19
OMPPaymentManager\createQueuedPayment
createQueuedPayment($request, $type, $userId, $assocId, $amount, $currencyCode=null)
Definition: OMPPaymentManager.inc.php:43
OMPPaymentManager\createCompletedPayment
createCompletedPayment($queuedPayment, $payMethod)
Definition: OMPPaymentManager.inc.php:120