16 import(
'lib.pkp.pages.user.PKPUserHandler');
27 $journal = $request->getJournal();
28 $user = $request->getUser();
30 if (!$journal || !$user || $journal->getData(
'publishingMode') != PUBLISHING_MODE_SUBSCRIPTION) {
31 $request->redirect(
null,
'index');
35 $individualSubscriptionTypesExist = $subscriptionTypeDao->subscriptionTypesExistByInstitutional($journal->getId(),
false);
36 $institutionalSubscriptionTypesExist = $subscriptionTypeDao->subscriptionTypesExistByInstitutional($journal->getId(),
true);
37 if (!$individualSubscriptionTypesExist && !$institutionalSubscriptionTypesExist) $request->redirect(
null,
'index');
41 if ($individualSubscriptionTypesExist) {
43 $userIndividualSubscription = $subscriptionDao->getByUserIdForJournal($user->getId(), $journal->getId());
44 $templateMgr->assign(
'userIndividualSubscription', $userIndividualSubscription);
47 if ($institutionalSubscriptionTypesExist) {
49 $userInstitutionalSubscriptions = $subscriptionDao->getByUserIdForJournal($user->getId(), $journal->getId());
50 $templateMgr->assign(
'userInstitutionalSubscriptions', $userInstitutionalSubscriptions);
57 $templateMgr->assign(array(
58 'subscriptionName' => $journal->getData(
'subscriptionName'),
59 'subscriptionEmail' => $journal->getData(
'subscriptionEmail'),
60 'subscriptionPhone' => $journal->getData(
'subscriptionPhone'),
61 'subscriptionMailingAddress' => $journal->getData(
'subscriptionMailingAddress'),
62 'subscriptionAdditionalInformation' => $journal->getLocalizedData(
'subscriptionAdditionalInformation'),
63 'journalTitle' => $journal->getLocalizedName(),
64 'journalPath' => $journal->getPath(),
65 'individualSubscriptionTypesExist' => $individualSubscriptionTypesExist,
66 'institutionalSubscriptionTypesExist' => $institutionalSubscriptionTypesExist,
67 'paymentsEnabled' => $paymentManager->isConfigured(),
69 $templateMgr->display(
'frontend/pages/userSubscriptions.tpl');
79 if($journal->getLocalizedAcronym() ==
'' || $journal->getData(
'contactEmail') ==
'' ||
80 $journal->getData(
'contactName') ==
'' || $journal->getLocalizedData(
'abbreviation') ==
'') {
90 parent::setupTemplate($request);
91 AppLocale::requireComponents(LOCALE_COMPONENT_APP_AUTHOR, LOCALE_COMPONENT_APP_EDITOR, LOCALE_COMPONENT_APP_MANAGER, LOCALE_COMPONENT_PKP_GRID);
105 $journal = $request->getJournal();
106 if (empty($args) || !$journal || $journal->getData(
'publishingMode') != PUBLISHING_MODE_SUBSCRIPTION) {
107 $request->redirect(
null,
'index');
111 $acceptSubscriptionPayments = $paymentManager->isConfigured();
112 if (!$acceptSubscriptionPayments) $request->redirect(
null,
'index');
115 $user = $request->getUser();
117 $institutional = array_shift($args);
119 $subscriptionId = (int) array_shift($args);
122 if ($institutional ==
'institutional') {
123 $institutional =
true;
124 import(
'classes.subscription.form.UserInstitutionalSubscriptionForm');
127 $institutional =
false;
128 import(
'classes.subscription.form.UserIndividualSubscriptionForm');
132 if (isset($subscriptionId)) {
134 if (!$subscriptionDao->subscriptionExistsByUser($subscriptionId, $user->getId())) {
135 $request->redirect(
null,
'index');
139 $subscription = $subscriptionDao->getById($subscriptionId);
140 $subscriptionStatus = $subscription->getStatus();
141 import(
'classes.subscription.Subscription');
142 $validStatus = array(
143 SUBSCRIPTION_STATUS_ACTIVE,
144 SUBSCRIPTION_STATUS_AWAITING_ONLINE_PAYMENT,
145 SUBSCRIPTION_STATUS_AWAITING_MANUAL_PAYMENT
148 if (!in_array($subscriptionStatus, $validStatus)) $request->redirect(
null,
'index');
150 if ($institutional) {
157 if ($institutional) {
161 if ($subscriptionDao->subscriptionExistsByUserForJournal($user->getId(), $journal->getId())) {
162 $request->redirect(
null,
'index');
168 $subscriptionForm->initData();
169 $subscriptionForm->display();
180 if (empty($args)) $request->redirect(
null,
'index');
182 $journal = $request->getJournal();
183 if (!$journal) $request->redirect(
null,
'index');
184 if ($journal->getData(
'publishingMode') != PUBLISHING_MODE_SUBSCRIPTION) $request->redirect(
null,
'index');
187 $acceptSubscriptionPayments = $paymentManager->isConfigured();
188 if (!$acceptSubscriptionPayments) $request->redirect(
null,
'index');
191 $user = $request->getUser();
193 $institutional = array_shift($args);
195 $subscriptionId = (int) array_shift($args);
198 if ($institutional ==
'institutional') {
199 $institutional =
true;
200 import(
'classes.subscription.form.UserInstitutionalSubscriptionForm');
203 $institutional =
false;
204 import(
'classes.subscription.form.UserIndividualSubscriptionForm');
208 if (isset($subscriptionId)) {
210 if (!$subscriptionDao->subscriptionExistsByUser($subscriptionId, $user->getId())) {
211 $request->redirect(
null,
'index');
215 $subscription = $subscriptionDao->getById($subscriptionId);
216 $subscriptionStatus = $subscription->getStatus();
217 import(
'classes.subscription.Subscription');
218 $validStatus = array(
219 SUBSCRIPTION_STATUS_ACTIVE,
220 SUBSCRIPTION_STATUS_AWAITING_ONLINE_PAYMENT,
221 SUBSCRIPTION_STATUS_AWAITING_MANUAL_PAYMENT
224 if (!in_array($subscriptionStatus, $validStatus)) $request->redirect(
null,
'index');
226 if ($institutional) {
233 if ($institutional) {
237 if ($subscriptionDao->subscriptionExistsByUserForJournal($user->getId(), $journal->getId())) {
238 $request->redirect(
null,
'index');
244 $subscriptionForm->readInputData();
247 if ($request->getUserVar(
'addIpRange')) {
249 $ipRanges = $subscriptionForm->getData(
'ipRanges');
251 $subscriptionForm->setData(
'ipRanges', $ipRanges);
253 }
else if (($delIpRange = $request->getUserVar(
'delIpRange')) && count($delIpRange) == 1) {
255 list($delIpRange) = array_keys($delIpRange);
256 $delIpRange = (int) $delIpRange;
257 $ipRanges = $subscriptionForm->getData(
'ipRanges');
258 array_splice($ipRanges, $delIpRange, 1);
259 $subscriptionForm->setData(
'ipRanges', $ipRanges);
262 if (isset($editData)) {
263 $subscriptionForm->display();
265 if ($subscriptionForm->validate()) {
266 $subscriptionForm->execute();
268 $subscriptionForm->display();
280 $journal = $request->getJournal();
281 if (!$journal || count($args) != 2 || $journal->getData(
'publishingMode') != PUBLISHING_MODE_SUBSCRIPTION) {
282 $request->redirect(
null,
'index');
286 $acceptSubscriptionPayments = $paymentManager->isConfigured();
287 if (!$acceptSubscriptionPayments) $request->redirect(
null,
'index');
290 $user = $request->getUser();
291 $institutional = array_shift($args);
292 $subscriptionId = (int) array_shift($args);
294 if ($institutional ==
'institutional') {
300 if (!$subscriptionDao->subscriptionExistsByUser($subscriptionId, $user->getId())) $request->redirect(
null,
'index');
302 $subscription = $subscriptionDao->getById($subscriptionId);
303 $subscriptionStatus = $subscription->getStatus();
304 import(
'classes.subscription.Subscription');
305 $validStatus = array(SUBSCRIPTION_STATUS_ACTIVE, SUBSCRIPTION_STATUS_AWAITING_ONLINE_PAYMENT);
307 if (!in_array($subscriptionStatus, $validStatus)) $request->redirect(
null,
'index');
310 $subscriptionType = $subscriptionTypeDao->getById($subscription->getTypeId());
312 $queuedPayment = $paymentManager->createQueuedPayment($request, PAYMENT_TYPE_PURCHASE_SUBSCRIPTION, $user->getId(), $subscriptionId, $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha());
313 $paymentManager->queuePayment($queuedPayment);
315 $paymentForm = $paymentManager->getPaymentForm($queuedPayment);
316 $paymentForm->display($request);
326 $journal = $request->getJournal();
327 if (count($args) != 2 || !$journal || $journal->getData(
'publishingMode') != PUBLISHING_MODE_SUBSCRIPTION) {
328 $request->redirect(
null,
'index');
332 $acceptSubscriptionPayments = $paymentManager->isConfigured();
333 if (!$acceptSubscriptionPayments) $request->redirect(
null,
'index');
336 $user = $request->getUser();
337 $institutional = array_shift($args);
338 $subscriptionId = (int) array_shift($args);
340 if ($institutional ==
'institutional') {
346 if (!$subscriptionDao->subscriptionExistsByUser($subscriptionId, $user->getId())) $request->redirect(
null,
'index');
348 $subscription = $subscriptionDao->getById($subscriptionId);
350 if ($subscription->isNonExpiring()) $request->redirect(
null,
'index');
352 import(
'classes.subscription.Subscription');
353 $subscriptionStatus = $subscription->getStatus();
354 $validStatus = array(
355 SUBSCRIPTION_STATUS_ACTIVE,
356 SUBSCRIPTION_STATUS_AWAITING_ONLINE_PAYMENT,
357 SUBSCRIPTION_STATUS_AWAITING_MANUAL_PAYMENT
360 if (!in_array($subscriptionStatus, $validStatus)) $request->redirect(
null,
'index');
363 $subscriptionType = $subscriptionTypeDao->getById($subscription->getTypeId());
365 $queuedPayment = $paymentManager->createQueuedPayment($request, PAYMENT_TYPE_RENEW_SUBSCRIPTION, $user->getId(), $subscriptionId, $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha());
366 $paymentManager->queuePayment($queuedPayment);
368 $paymentForm = $paymentManager->getPaymentForm($queuedPayment);
369 $paymentForm->display($request);
380 $journal = $request->getJournal();
381 $user = $request->getUser();
385 $queuedPayment = $paymentManager->createQueuedPayment($request, PAYMENT_TYPE_MEMBERSHIP, $user->getId(),
null, $journal->getData(
'membershipFee'));
386 $paymentManager->queuePayment($queuedPayment);
388 $paymentForm = $paymentManager->getPaymentForm($queuedPayment);
389 $paymentForm->display($request);