Open Journal Systems  3.3.0
IndividualSubscriptionForm.inc.php
1 <?php
2 
16 import('classes.subscription.form.SubscriptionForm');
17 
19 
25  function __construct($request, $subscriptionId = null) {
26  parent::__construct('payments/individualSubscriptionForm.tpl', $subscriptionId);
27 
28  $subscriptionId = isset($subscriptionId) ? (int) $subscriptionId : null;
29  $journal = $request->getJournal();
30  $journalId = $journal->getId();
31 
32  if (isset($subscriptionId)) {
33  $subscriptionDao = DAORegistry::getDAO('IndividualSubscriptionDAO'); /* @var $subscriptionDao IndividualSubscriptionDAO */
34  if ($subscriptionDao->subscriptionExists($subscriptionId)) {
35  $this->subscription = $subscriptionDao->getById($subscriptionId);
36  }
37  }
38 
39  $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); /* @var $subscriptionTypeDao SubscriptionTypeDAO */
40  $subscriptionTypeIterator = $subscriptionTypeDao->getByInstitutional($journalId, false);
41  $this->subscriptionTypes = array();
42  while ($subscriptionType = $subscriptionTypeIterator->next()) {
43  $this->subscriptionTypes[$subscriptionType->getId()] = $subscriptionType->getSummaryString();
44  }
45 
46  if (count($this->subscriptionTypes) == 0) {
47  $this->addError('typeId', __('manager.subscriptions.form.typeRequired'));
48  $this->addErrorField('typeId');
49  }
50 
51  // Ensure subscription type is valid
52  $this->addCheck(new FormValidatorCustom($this, 'typeId', 'required', 'manager.subscriptions.form.typeIdValid', function($typeId) use ($journalId) {
53  $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO'); /* @var $subscriptionTypeDao SubscriptionTypeDAO */
54  return ($subscriptionTypeDao->subscriptionTypeExistsByTypeId($typeId, $journalId) && $subscriptionTypeDao->getSubscriptionTypeInstitutional($typeId) == 0);
55  }));
56 
57  // Ensure that user does not already have a subscription for this journal
58  if (!isset($subscriptionId)) {
59  $this->addCheck(new FormValidatorCustom($this, 'userId', 'required', 'manager.subscriptions.form.subscriptionExists', array(DAORegistry::getDAO('IndividualSubscriptionDAO'), 'subscriptionExistsByUserForJournal'), array($journalId), true));
60  } else {
61  $this->addCheck(new FormValidatorCustom($this, 'userId', 'required', 'manager.subscriptions.form.subscriptionExists', function($userId) use ($journalId, $subscriptionId) {
62  $subscriptionDao = DAORegistry::getDAO('IndividualSubscriptionDAO'); /* @var $subscriptionDao IndividualSubscriptionDAO */
63  $checkSubscription = $subscriptionDao->getByUserIdForJournal($userId, $journalId);
64  return (!$checkSubscription || $checkSubscription->getId() == $subscriptionId) ? true : false;
65  }));
66  }
67  }
68 
72  function execute(...$functionArgs) {
73  $insert = false;
74  if (!isset($this->subscription)) {
75  import('classes.subscription.IndividualSubscription');
76  $this->subscription = new IndividualSubscription();
77  $insert = true;
78  }
79 
80  parent::execute(...$functionArgs);
81  $individualSubscriptionDao = DAORegistry::getDAO('IndividualSubscriptionDAO'); /* @var $individualSubscriptionDao IndividualSubscriptionDAO */
82 
83  if ($insert) {
84  $individualSubscriptionDao->insertObject($this->subscription);
85  } else {
86  $individualSubscriptionDao->updateObject($this->subscription);
87  }
88 
89  // Send notification email
90  if ($this->_data['notifyEmail'] == 1) {
91  $mail = $this->_prepareNotificationEmail('SUBSCRIPTION_NOTIFY');
92  if (!$mail->send()) {
93  import('classes.notification.NotificationManager');
94  $notificationMgr = new NotificationManager();
95  $request = Application::get()->getRequest();
96  $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => __('email.compose.error')));
97  }
98  }
99  }
100 }
101 
102 
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
Form\addError
addError($field, $message)
Definition: Form.inc.php:404
SubscriptionForm
Base form class for subscription create/edits.
Definition: SubscriptionForm.inc.php:18
SubscriptionForm\$userId
$userId
Definition: SubscriptionForm.inc.php:30
IndividualSubscriptionForm\__construct
__construct($request, $subscriptionId=null)
Definition: IndividualSubscriptionForm.inc.php:25
IndividualSubscriptionForm
Form class for individual subscription create/edits.
Definition: IndividualSubscriptionForm.inc.php:18
IndividualSubscription
Basic class describing an individual (non-institutional) subscription.
Definition: IndividualSubscription.inc.php:19
SubscriptionForm\_prepareNotificationEmail
_prepareNotificationEmail($mailTemplateKey)
Definition: SubscriptionForm.inc.php:230
IndividualSubscriptionForm\execute
execute(... $functionArgs)
Definition: IndividualSubscriptionForm.inc.php:72
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
NotificationManager
Definition: NotificationManager.inc.php:19
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
FormValidatorCustom
Form validation check with a custom user function performing the validation check.
Definition: FormValidatorCustom.inc.php:18
Form\addErrorField
addErrorField($field)
Definition: Form.inc.php:412