_context = $context; } /** * Queue a payment for receipt. * * @param object $queuedPayment * @param string $expiryDate optional * * @return mixed Queued payment ID for new payment, or false if fails */ public function queuePayment($queuedPayment, $expiryDate = null) { if (!$this->isConfigured()) { return false; } $queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /** @var QueuedPaymentDAO $queuedPaymentDao */ $queuedPaymentId = $queuedPaymentDao->insertObject($queuedPayment, $expiryDate); // Perform periodic cleanup if (time() % 100 == 0) { $queuedPaymentDao->deleteExpired(); } return $queuedPaymentId; } /** * Abstract method for fetching the payment plugin * * @return \PKP\plugins\PaymethodPlugin */ abstract public function getPaymentPlugin(); /** * Check if there is a payment plugin and if is configured * * @return bool */ public function isConfigured() { $paymentPlugin = $this->getPaymentPlugin(); if ($paymentPlugin !== null) { return $paymentPlugin->isConfigured($this->_context); } return false; } /** * Get the payment form for the configured payment plugin and specified payment. * * @param QueuedPayment $queuedPayment * * @return \PKP\form\Form */ public function getPaymentForm($queuedPayment) { $paymentPlugin = $this->getPaymentPlugin(); if ($paymentPlugin !== null && $paymentPlugin->isConfigured($this->_context)) { return $paymentPlugin->getPaymentForm($this->_context, $queuedPayment); } return false; } /** * Fetch a queued payment * * @param int $queuedPaymentId * * @return QueuedPayment */ public function getQueuedPayment($queuedPaymentId) { $queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /** @var QueuedPaymentDAO $queuedPaymentDao */ $queuedPayment = $queuedPaymentDao->getById($queuedPaymentId); return $queuedPayment; } /** * Fulfill a queued payment * * @param \PKP\core\PKPRequest $request * @param QueuedPayment $queuedPayment * * @return bool success/failure */ abstract public function fulfillQueuedPayment($request, $queuedPayment); } if (!PKP_STRICT_MODE) { class_alias('\PKP\payment\PaymentManager', '\PaymentManager'); }