first commit
This commit is contained in:
@@ -0,0 +1,241 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file pages/payments/PaymentsHandler.php
|
||||
*
|
||||
* Copyright (c) 2014-2021 Simon Fraser University
|
||||
* Copyright (c) 2003-2021 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class PaymentsHandler
|
||||
*
|
||||
* @ingroup pages_payments
|
||||
*
|
||||
* @brief Handle requests for payment management.
|
||||
*/
|
||||
|
||||
namespace APP\pages\payments;
|
||||
|
||||
use APP\core\Application;
|
||||
use APP\handler\Handler;
|
||||
use APP\notification\NotificationManager;
|
||||
use APP\subscription\form\PaymentTypesForm;
|
||||
use APP\subscription\form\SubscriptionPolicyForm;
|
||||
use APP\template\TemplateManager;
|
||||
use PKP\config\Config;
|
||||
use PKP\core\JSONMessage;
|
||||
use PKP\core\PKPApplication;
|
||||
use PKP\security\authorization\PKPSiteAccessPolicy;
|
||||
use PKP\security\Role;
|
||||
|
||||
class PaymentsHandler extends Handler
|
||||
{
|
||||
/** @copydoc PKPHandler::_isBackendPage */
|
||||
public $_isBackendPage = true;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->addRoleAssignment(
|
||||
[Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUBSCRIPTION_MANAGER],
|
||||
['index', 'subscriptions', 'subscriptionTypes', 'subscriptionPolicies', 'saveSubscriptionPolicies', 'paymentTypes', 'savePaymentTypes', 'payments']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a list of payment tabs for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function index($args, $request)
|
||||
{
|
||||
$this->setupTemplate($request);
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$templateMgr->assign([
|
||||
'pageTitle' => __('manager.subscriptions'),
|
||||
]);
|
||||
$templateMgr->display('payments/index.tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc PKPHandler::authorize()
|
||||
*/
|
||||
public function authorize($request, &$args, $roleAssignments)
|
||||
{
|
||||
$this->addPolicy(new PKPSiteAccessPolicy($request, null, $roleAssignments));
|
||||
return parent::authorize($request, $args, $roleAssignments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a list of subscriptions for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function subscriptions($args, $request)
|
||||
{
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$dispatcher = $request->getDispatcher();
|
||||
switch (array_shift($args)) {
|
||||
case 'institutional':
|
||||
return $templateMgr->fetchAjax(
|
||||
'institutionalSubscriptionsGridContainer',
|
||||
$dispatcher->url(
|
||||
$request,
|
||||
PKPApplication::ROUTE_COMPONENT,
|
||||
null,
|
||||
'grid.subscriptions.InstitutionalSubscriptionsGridHandler',
|
||||
'fetchGrid'
|
||||
)
|
||||
);
|
||||
case 'individual':
|
||||
return $templateMgr->fetchAjax(
|
||||
'individualSubscriptionsGridContainer',
|
||||
$dispatcher->url(
|
||||
$request,
|
||||
PKPApplication::ROUTE_COMPONENT,
|
||||
null,
|
||||
'grid.subscriptions.IndividualSubscriptionsGridHandler',
|
||||
'fetchGrid'
|
||||
)
|
||||
);
|
||||
}
|
||||
$dispatcher->handle404();
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a list of subscription types for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function subscriptionTypes($args, $request)
|
||||
{
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$dispatcher = $request->getDispatcher();
|
||||
return $templateMgr->fetchAjax(
|
||||
'subscriptionTypesGridContainer',
|
||||
$dispatcher->url(
|
||||
$request,
|
||||
PKPApplication::ROUTE_COMPONENT,
|
||||
null,
|
||||
'grid.subscriptions.SubscriptionTypesGridHandler',
|
||||
'fetchGrid'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display subscription policies for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function subscriptionPolicies($args, $request)
|
||||
{
|
||||
$this->validate();
|
||||
$this->setupTemplate($request);
|
||||
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
|
||||
if (Config::getVar('general', 'scheduled_tasks')) {
|
||||
$templateMgr->assign('scheduledTasksEnabled', true);
|
||||
}
|
||||
|
||||
$paymentManager = Application::getPaymentManager($request->getJournal());
|
||||
$templateMgr->assign('acceptSubscriptionPayments', $paymentManager->isConfigured());
|
||||
|
||||
$subscriptionPolicyForm = new SubscriptionPolicyForm();
|
||||
$subscriptionPolicyForm->initData();
|
||||
return new JSONMessage(true, $subscriptionPolicyForm->fetch($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save subscription policies for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function saveSubscriptionPolicies($args, $request)
|
||||
{
|
||||
$this->validate();
|
||||
$this->setupTemplate($request);
|
||||
|
||||
$subscriptionPolicyForm = new SubscriptionPolicyForm();
|
||||
$subscriptionPolicyForm->readInputData();
|
||||
if ($subscriptionPolicyForm->validate()) {
|
||||
$subscriptionPolicyForm->execute();
|
||||
$notificationManager = new NotificationManager();
|
||||
$user = $request->getUser();
|
||||
$notificationManager->createTrivialNotification($user->getId());
|
||||
return new JSONMessage(true);
|
||||
}
|
||||
return new JSONMessage(true, $subscriptionPolicyForm->fetch($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display payment types for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function paymentTypes($args, $request)
|
||||
{
|
||||
$this->validate();
|
||||
$this->setupTemplate($request);
|
||||
|
||||
|
||||
$paymentTypesForm = new PaymentTypesForm();
|
||||
$paymentTypesForm->initData();
|
||||
return new JSONMessage(true, $paymentTypesForm->fetch($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* Save payment types for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function savePaymentTypes($args, $request)
|
||||
{
|
||||
$this->validate();
|
||||
$this->setupTemplate($request);
|
||||
|
||||
$paymentTypesForm = new PaymentTypesForm();
|
||||
$paymentTypesForm->readInputData();
|
||||
if ($paymentTypesForm->validate()) {
|
||||
$paymentTypesForm->execute();
|
||||
$notificationManager = new NotificationManager();
|
||||
$user = $request->getUser();
|
||||
$notificationManager->createTrivialNotification($user->getId());
|
||||
return new JSONMessage(true);
|
||||
}
|
||||
return new JSONMessage(true, $paymentTypesForm->fetch($request));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a list of payments for the current journal.
|
||||
*
|
||||
* @param array $args
|
||||
* @param \APP\core\Request $request
|
||||
*/
|
||||
public function payments($args, $request)
|
||||
{
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$dispatcher = $request->getDispatcher();
|
||||
return $templateMgr->fetchAjax(
|
||||
'paymentsGridContainer',
|
||||
$dispatcher->url(
|
||||
$request,
|
||||
PKPApplication::ROUTE_COMPONENT,
|
||||
null,
|
||||
'grid.subscriptions.PaymentsGridHandler',
|
||||
'fetchGrid'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user