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