Open Journal Systems  3.3.0
ManualPaymentPlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.PaymethodPlugin');
17 
19 
23  function getName() {
24  return 'ManualPayment';
25  }
26 
30  function getDisplayName() {
31  return __('plugins.paymethod.manual.displayName');
32  }
33 
37  function getDescription() {
38  return __('plugins.paymethod.manual.description');
39  }
40 
44  function register($category, $path, $mainContextId = null) {
45  if (parent::register($category, $path, $mainContextId)) {
46  $this->addLocaleData();
47  \HookRegistry::register('Form::config::before', array($this, 'addSettings'));
48  return true;
49  }
50  return false;
51  }
52 
59  public function addSettings($hookName, $form) {
60  if ($form->id !== FORM_PAYMENT_SETTINGS) {
61  return;
62  }
63 
64  $context = Application::get()->getRequest()->getContext();
65  if (!$context) {
66  return;
67  }
68 
69  $form->addGroup([
70  'id' => 'manualPayment',
71  'label' => __('plugins.paymethod.manual.displayName'),
72  'showWhen' => 'paymentsEnabled',
73  ])
74  ->addField(new \PKP\components\forms\FieldTextArea('manualInstructions', [
75  'label' => __('plugins.paymethod.manual.settings'),
76  'value' => $this->getSetting($context->getId(), 'manualInstructions'),
77  'groupId' => 'manualPayment',
78  ]));
79 
80  return;
81  }
82 
86  public function saveSettings($params, $slimRequest, $request) {
87  $allParams = $slimRequest->getParsedBody();
88  $manualInstructions = isset($allParams['manualInstructions']) ? (string) $allParams['manualInstructions'] : '';
89  $this->updateSetting($request->getContext()->getId(), 'manualInstructions', $manualInstructions);
90  return [];
91  }
92 
96  function isConfigured($context) {
97  if (!$context) return false;
98  if ($this->getSetting($context->getId(), 'manualInstructions') == '') return false;
99  return true;
100  }
101 
105  function getPaymentForm($context, $queuedPayment) {
106  if (!$this->isConfigured($context)) return null;
107 
108  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON);
109 
110  import('lib.pkp.classes.form.Form');
111  $paymentForm = new Form($this->getTemplateResource('paymentForm.tpl'));
112  $paymentManager = Application::getPaymentManager($context);
113  $paymentForm->setData(array(
114  'itemName' => $paymentManager->getPaymentName($queuedPayment),
115  'itemAmount' => $queuedPayment->getAmount()>0?$queuedPayment->getAmount():null,
116  'itemCurrencyCode' => $queuedPayment->getAmount()>0?$queuedPayment->getCurrencyCode():null,
117  'manualInstructions' => $this->getSetting($context->getId(), 'manualInstructions'),
118  'queuedPaymentId' => $queuedPayment->getId(),
119  ));
120  return $paymentForm;
121  }
122 
128  function handle($args, $request) {
129  $context = $request->getContext();
130  $templateMgr = TemplateManager::getManager($request);
131  $user = $request->getUser();
132  $op = isset($args[0])?$args[0]:null;
133  $queuedPaymentId = isset($args[1])?((int) $args[1]):0;
134 
135  $queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /* @var $queuedPaymentDao QueuedPaymentDAO */
136  $queuedPayment = $queuedPaymentDao->getById($queuedPaymentId);
137  $paymentManager = Application::getPaymentManager($context);
138  // if the queued payment doesn't exist, redirect away from payments
139  if (!$queuedPayment) $request->redirect(null, 'index');
140 
141  switch ($op) {
142  case 'notify':
143  import('lib.pkp.classes.mail.MailTemplate');
144  AppLocale::requireComponents(LOCALE_COMPONENT_APP_COMMON);
145  $contactName = $context->getData('contactName');
146  $contactEmail = $context->getData('contactEmail');
147  $mail = new MailTemplate('MANUAL_PAYMENT_NOTIFICATION');
148  $mail->setReplyTo(null);
149  $mail->addRecipient($contactEmail, $contactName);
150  $mail->assignParams(array(
151  'contextName' => $context->getLocalizedName(),
152  'userFullName' => $user?$user->getFullName():('(' . __('common.none') . ')'),
153  'userName' => $user?$user->getUsername():('(' . __('common.none') . ')'),
154  'itemName' => $paymentManager->getPaymentName($queuedPayment),
155  'itemCost' => $queuedPayment->getAmount(),
156  'itemCurrencyCode' => $queuedPayment->getCurrencyCode()
157  ));
158  $mail->send();
159 
160  $templateMgr->assign(array(
161  'currentUrl' => $request->url(null, null, 'payment', 'plugin', array('notify', $queuedPaymentId)),
162  'pageTitle' => 'plugins.paymethod.manual.paymentNotification',
163  'message' => 'plugins.paymethod.manual.notificationSent',
164  'backLink' => $queuedPayment->getRequestUrl(),
165  'backLinkLabel' => 'common.continue'
166  ));
167  $templateMgr->display('frontend/pages/message.tpl');
168  exit();
169  }
170  parent::handle($args, $request); // Don't know what to do with it
171  }
172 
177  return ($this->getPluginPath() . DIRECTORY_SEPARATOR . 'emailTemplates.xml');
178  }
179 }
$op
$op
Definition: lib/pkp/pages/help/index.php:18
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
Plugin\updateSetting
updateSetting($contextId, $name, $value, $type=null)
Definition: Plugin.inc.php:495
PKP
PaymethodPlugin
Definition: PaymethodPlugin.inc.php:18
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ManualPaymentPlugin\isConfigured
isConfigured($context)
Definition: ManualPaymentPlugin.inc.php:96
Application\getPaymentManager
static getPaymentManager($context)
Definition: Application.inc.php:226
ManualPaymentPlugin\getPaymentForm
getPaymentForm($context, $queuedPayment)
Definition: ManualPaymentPlugin.inc.php:105
MailTemplate
Subclass of Mail for mailing a template email.
Definition: MailTemplate.inc.php:21
ManualPaymentPlugin\addSettings
addSettings($hookName, $form)
Definition: ManualPaymentPlugin.inc.php:59
Plugin\getSetting
getSetting($contextId, $name)
Definition: Plugin.inc.php:473
ManualPaymentPlugin\getDisplayName
getDisplayName()
Definition: ManualPaymentPlugin.inc.php:30
ManualPaymentPlugin\getName
getName()
Definition: ManualPaymentPlugin.inc.php:23
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
ManualPaymentPlugin\getDescription
getDescription()
Definition: ManualPaymentPlugin.inc.php:37
Plugin\getTemplateResource
getTemplateResource($template=null, $inCore=false)
Definition: Plugin.inc.php:349
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
ManualPaymentPlugin\getInstallEmailTemplatesFile
getInstallEmailTemplatesFile()
Definition: ManualPaymentPlugin.inc.php:176
Plugin\$request
$request
Definition: Plugin.inc.php:68
Plugin\addLocaleData
addLocaleData($locale=null)
Definition: Plugin.inc.php:454
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
ManualPaymentPlugin\saveSettings
saveSettings($params, $slimRequest, $request)
Definition: ManualPaymentPlugin.inc.php:86
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
ManualPaymentPlugin
Manual payment plugin class.
Definition: ManualPaymentPlugin.inc.php:18
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
ManualPaymentPlugin\handle
handle($args, $request)
Definition: ManualPaymentPlugin.inc.php:128