16 import(
'lib.pkp.classes.form.Form');
38 parent::__construct(
'frontend/pages/purchaseIndividualSubscription.tpl');
41 $this->subscription =
null;
44 $subscriptionId = isset($subscriptionId) ? (int) $subscriptionId :
null;
46 if (isset($subscriptionId)) {
48 if ($subscriptionDao->subscriptionExists($subscriptionId)) {
49 $this->subscription = $subscriptionDao->getById($subscriptionId);
53 $journal = $this->request->getJournal();
54 $journalId = $journal->getId();
57 $subscriptionTypes = $subscriptionTypeDao->getByInstitutional($journalId,
false,
false);
61 $this->
addCheck(
new FormValidatorCustom($this,
'typeId',
'required',
'user.subscriptions.form.typeIdValid',
function($typeId) use ($journalId) {
63 return ($subscriptionTypeDao->subscriptionTypeExistsByTypeId($typeId, $journalId) && $subscriptionTypeDao->getSubscriptionTypeInstitutional($typeId) == 0) && $subscriptionTypeDao->getSubscriptionTypeDisablePublicDisplay($typeId) == 0;
67 if (!isset($subscriptionId)) {
68 $this->
addCheck(
new FormValidatorCustom($this,
'userId',
'required',
'user.subscriptions.form.subscriptionExists', array(
DAORegistry::getDAO(
'IndividualSubscriptionDAO'),
'subscriptionExistsByUserForJournal'), array($journalId),
true));
70 $this->
addCheck(
new FormValidatorCustom($this,
'userId',
'required',
'user.subscriptions.form.subscriptionExists',
function(
$userId) use ($journalId, $subscriptionId) {
72 $checkId = $subscriptionDao->getByUserIdForJournal(
$userId, $journalId);
73 return ($checkId == 0 || $checkId == $subscriptionId) ? true :
false;
85 if (isset($this->subscription)) {
103 $templateMgr->assign(array(
104 'subscriptionId' => $this->subscription?$this->subscription->getId():
null,
105 'subscriptionTypes' => array_map(
106 function($subscriptionType) {
return $subscriptionType->getLocalizedName() .
' (' . $subscriptionType->getCost() .
' ' . $subscriptionType->getCurrencyCodeAlpha() .
')';},
121 $needMembership = $subscriptionTypeDao->getSubscriptionTypeMembership($this->
getData(
'typeId'));
123 if ($needMembership) {
124 $this->
addCheck(
new FormValidator($this,
'membership',
'required',
'user.subscriptions.form.membershipRequired'));
131 function execute(...$functionArgs) {
132 $journal = $this->request->getJournal();
133 $journalId = $journal->getId();
134 $typeId = $this->
getData(
'typeId');
137 $subscriptionType = $subscriptionTypeDao->getById($typeId, $journalId);
138 $nonExpiring = $subscriptionType->getNonExpiring();
139 $today = date(
'Y-m-d');
142 parent::execute(...$functionArgs);
144 if (!isset($this->subscription)) {
157 $paymentPlugin = $paymentManager->getPaymentPlugin();
159 if ($paymentPlugin->getName() ==
'ManualPayment') {
160 $subscription->setStatus(SUBSCRIPTION_STATUS_AWAITING_MANUAL_PAYMENT);
162 $subscription->setStatus(SUBSCRIPTION_STATUS_AWAITING_ONLINE_PAYMENT);
167 $subscription->setDateStart($nonExpiring ?
null : $today);
176 $queuedPayment = $paymentManager->createQueuedPayment($this->request, PAYMENT_TYPE_PURCHASE_SUBSCRIPTION, $this->userId,
$subscription->getId(), $subscriptionType->getCost(), $subscriptionType->getCurrencyCodeAlpha());
177 $paymentManager->queuePayment($queuedPayment);
179 $paymentForm = $paymentManager->getPaymentForm($queuedPayment);
180 $paymentForm->display($this->request);