Open Journal Systems  3.3.0
SubscriptionPolicyForm.inc.php
1 <?php
2 
16 define('SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_MONTHS_MIN', '1');
17 define('SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_MONTHS_MAX', '12');
18 define('SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_WEEKS_MIN', '1');
19 define('SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_WEEKS_MAX', '3');
20 define('SUBSCRIPTION_EXPIRY_REMINDER_AFTER_MONTHS_MIN', '1');
21 define('SUBSCRIPTION_EXPIRY_REMINDER_AFTER_MONTHS_MAX', '12');
22 define('SUBSCRIPTION_EXPIRY_REMINDER_AFTER_WEEKS_MIN', '1');
23 define('SUBSCRIPTION_EXPIRY_REMINDER_AFTER_WEEKS_MAX', '3');
24 
25 import('lib.pkp.classes.form.Form');
26 
27 
29 
32 
35 
38 
41 
45  public function __construct() {
46  AppLocale::requireComponents(LOCALE_COMPONENT_APP_MANAGER);
47 
48  $this->validNumMonthsBeforeExpiry = array(0 => __('common.disabled'));
49  for ($i=SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_MONTHS_MIN; $i<=SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_MONTHS_MAX; $i++) {
50  $this->validNumMonthsBeforeExpiry[$i] = __('manager.subscriptionPolicies.xMonths', array('x' => $i));
51  }
52 
53  $this->validNumWeeksBeforeExpiry = array(0 => __('common.disabled'));
54  for ($i=SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_WEEKS_MIN; $i<=SUBSCRIPTION_EXPIRY_REMINDER_BEFORE_WEEKS_MAX; $i++) {
55  $this->validNumWeeksBeforeExpiry[$i] = __('manager.subscriptionPolicies.xWeeks', array('x' => $i));
56  }
57 
58  $this->validNumMonthsAfterExpiry = array(0 => __('common.disabled'));
59  for ($i=SUBSCRIPTION_EXPIRY_REMINDER_AFTER_MONTHS_MIN; $i<=SUBSCRIPTION_EXPIRY_REMINDER_AFTER_MONTHS_MAX; $i++) {
60  $this->validNumMonthsAfterExpiry[$i] = __('manager.subscriptionPolicies.xMonths', array('x' => $i));
61  }
62 
63  $this->validNumWeeksAfterExpiry = array(0 => __('common.disabled'));
64  for ($i=SUBSCRIPTION_EXPIRY_REMINDER_AFTER_WEEKS_MIN; $i<=SUBSCRIPTION_EXPIRY_REMINDER_AFTER_WEEKS_MAX; $i++) {
65  $this->validNumWeeksAfterExpiry[$i] = __('manager.subscriptionPolicies.xWeeks', array('x' => $i));
66  }
67 
68  parent::__construct('payments/subscriptionPolicyForm.tpl');
69 
70  // If provided, subscription contact email is valid
71  $this->addCheck(new FormValidatorEmail($this, 'subscriptionEmail', 'optional', 'manager.subscriptionPolicies.subscriptionContactEmailValid'));
72 
73  // If provided expiry reminder months before value is valid value
74  $this->addCheck(new FormValidatorInSet($this, 'numMonthsBeforeSubscriptionExpiryReminder', 'optional', 'manager.subscriptionPolicies.numMonthsBeforeSubscriptionExpiryReminderValid', array_keys($this->validNumMonthsBeforeExpiry)));
75 
76  // If provided expiry reminder weeks before value is valid value
77  $this->addCheck(new FormValidatorInSet($this, 'numWeeksBeforeSubscriptionExpiryReminder', 'optional', 'manager.subscriptionPolicies.numWeeksBeforeSubscriptionExpiryReminderValid', array_keys($this->validNumWeeksBeforeExpiry)));
78 
79  // If provided expiry reminder months after value is valid value
80  $this->addCheck(new FormValidatorInSet($this, 'numMonthsAfterSubscriptionExpiryReminder', 'optional', 'manager.subscriptionPolicies.numMonthsAfterSubscriptionExpiryReminderValid', array_keys($this->validNumMonthsAfterExpiry)));
81 
82  // If provided expiry reminder weeks after value is valid value
83  $this->addCheck(new FormValidatorInSet($this, 'numWeeksAfterSubscriptionExpiryReminder', 'optional', 'manager.subscriptionPolicies.numWeeksAfterSubscriptionExpiryReminderValid', array_keys($this->validNumWeeksAfterExpiry)));
84  $this->addCheck(new FormValidatorPost($this));
85  $this->addCheck(new FormValidatorCSRF($this));
86  }
87 
91  public function fetch($request, $template = null, $display = false) {
92  $paymentManager = Application::getPaymentManager($request->getJournal());
93  $templateMgr = TemplateManager::getManager();
94  $templateMgr->assign(array(
95  'validNumMonthsBeforeExpiry' => $this->validNumMonthsBeforeExpiry,
96  'validNumWeeksBeforeExpiry' => $this->validNumWeeksBeforeExpiry,
97  'validNumMonthsAfterExpiry' => $this->validNumMonthsAfterExpiry,
98  'validNumWeeksAfterExpiry' => $this->validNumWeeksAfterExpiry,
99  'scheduledTasksEnabled' => (boolean) Config::getVar('general', 'scheduled_tasks'),
100  'paymentsEnabled' => $paymentManager->isConfigured(),
101  ));
102 
103  return parent::fetch($request, $template, $display);
104  }
105 
109  public function initData() {
110  $request = Application::get()->getRequest();
111  $journal = $request->getJournal();
112  $this->_data = array(
113  'subscriptionName' => $journal->getData('subscriptionName'),
114  'subscriptionEmail' => $journal->getData('subscriptionEmail'),
115  'subscriptionPhone' => $journal->getData('subscriptionPhone'),
116  'subscriptionMailingAddress' => $journal->getData('subscriptionMailingAddress'),
117  'subscriptionAdditionalInformation' => $journal->getData('subscriptionAdditionalInformation'),
118  'enableOpenAccessNotification' => $journal->getData('enableOpenAccessNotification'),
119  'subscriptionExpiryPartial' => $journal->getData('subscriptionExpiryPartial'),
120  'enableSubscriptionOnlinePaymentNotificationPurchaseIndividual' => $journal->getData('enableSubscriptionOnlinePaymentNotificationPurchaseIndividual'),
121  'enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional' => $journal->getData('enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional'),
122  'enableSubscriptionOnlinePaymentNotificationRenewIndividual' => $journal->getData('enableSubscriptionOnlinePaymentNotificationRenewIndividual'),
123  'enableSubscriptionOnlinePaymentNotificationRenewInstitutional' => $journal->getData('enableSubscriptionOnlinePaymentNotificationRenewInstitutional'),
124  'numMonthsBeforeSubscriptionExpiryReminder' => $journal->getData('numMonthsBeforeSubscriptionExpiryReminder'),
125  'numWeeksBeforeSubscriptionExpiryReminder' => $journal->getData('numWeeksBeforeSubscriptionExpiryReminder'),
126  'numMonthsAfterSubscriptionExpiryReminder' => $journal->getData('numMonthsAfterSubscriptionExpiryReminder'),
127  'numWeeksAfterSubscriptionExpiryReminder' => $journal->getData('numWeeksAfterSubscriptionExpiryReminder'),
128  );
129  }
130 
134  public function readInputData() {
135  $this->readUserVars(array('subscriptionName', 'subscriptionEmail', 'subscriptionPhone', 'subscriptionMailingAddress', 'subscriptionAdditionalInformation', 'enableOpenAccessNotification', 'subscriptionExpiryPartial', 'enableSubscriptionOnlinePaymentNotificationPurchaseIndividual', 'enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional', 'enableSubscriptionOnlinePaymentNotificationRenewIndividual', 'enableSubscriptionOnlinePaymentNotificationRenewInstitutional', 'numMonthsBeforeSubscriptionExpiryReminder', 'numWeeksBeforeSubscriptionExpiryReminder', 'numWeeksAfterSubscriptionExpiryReminder', 'numMonthsAfterSubscriptionExpiryReminder'));
136 
137  $this->addCheck(new FormValidatorInSet($this, 'numMonthsBeforeSubscriptionExpiryReminder', 'required', 'manager.subscriptionPolicies.numMonthsBeforeSubscriptionExpiryReminderValid', array_keys($this->validNumMonthsBeforeExpiry)));
138  $this->addCheck(new FormValidatorInSet($this, 'numWeeksBeforeSubscriptionExpiryReminder', 'required', 'manager.subscriptionPolicies.numWeeksBeforeSubscriptionExpiryReminderValid', array_keys($this->validNumWeeksBeforeExpiry)));
139  $this->addCheck(new FormValidatorInSet($this, 'numMonthsAfterSubscriptionExpiryReminder', 'required', 'manager.subscriptionPolicies.numMonthsAfterSubscriptionExpiryReminderValid', array_keys($this->validNumMonthsAfterExpiry)));
140  $this->addCheck(new FormValidatorInSet($this, 'numWeeksAfterSubscriptionExpiryReminder', 'required', 'manager.subscriptionPolicies.numWeeksAfterSubscriptionExpiryReminderValid', array_keys($this->validNumWeeksAfterExpiry)));
141  }
142 
147  public function getLocaleFieldNames() {
148  return array('subscriptionAdditionalInformation');
149  }
150 
154  public function execute(...$functionArgs) {
155  $request = Application::get()->getRequest();
156  $journal = $request->getJournal();
157 
158  $journal->setData('subscriptionName', $this->getData('subscriptionName'));
159  $journal->setData('subscriptionEmail', $this->getData('subscriptionEmail'));
160  $journal->setData('subscriptionPhone', $this->getData('subscriptionPhone'));
161  $journal->setData('subscriptionMailingAddress', $this->getData('subscriptionMailingAddress'));
162  $journal->setData('subscriptionAdditionalInformation', $this->getData('subscriptionAdditionalInformation')); // Localized
163  $journal->setData('enableOpenAccessNotification', $this->getData('enableOpenAccessNotification') == null ? 0 : $this->getData('enableOpenAccessNotification'));
164  $journal->setData('subscriptionExpiryPartial', $this->getData('subscriptionExpiryPartial') == null ? 0 : $this->getData('subscriptionExpiryPartial'));
165  $journal->setData('enableSubscriptionOnlinePaymentNotificationPurchaseIndividual', $this->getData('enableSubscriptionOnlinePaymentNotificationPurchaseIndividual') == null ? 0 : $this->getData('enableSubscriptionOnlinePaymentNotificationPurchaseIndividual'));
166  $journal->setData('enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional', $this->getData('enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional') == null ? 0 : $this->getData('enableSubscriptionOnlinePaymentNotificationPurchaseInstitutional'));
167  $journal->setData('enableSubscriptionOnlinePaymentNotificationRenewIndividual', $this->getData('enableSubscriptionOnlinePaymentNotificationRenewIndividual') == null ? 0 : $this->getData('enableSubscriptionOnlinePaymentNotificationRenewIndividual'));
168  $journal->setData('enableSubscriptionOnlinePaymentNotificationRenewInstitutional', $this->getData('enableSubscriptionOnlinePaymentNotificationRenewInstitutional') == null ? 0 : $this->getData('enableSubscriptionOnlinePaymentNotificationRenewInstitutional'));
169  $journal->setData('numMonthsBeforeSubscriptionExpiryReminder', $this->getData('numMonthsBeforeSubscriptionExpiryReminder'));
170  $journal->setData('numWeeksBeforeSubscriptionExpiryReminder', $this->getData('numWeeksBeforeSubscriptionExpiryReminder'));
171  $journal->setData('numMonthsAfterSubscriptionExpiryReminder', $this->getData('numMonthsAfterSubscriptionExpiryReminder'));
172  $journal->setData('numWeeksAfterSubscriptionExpiryReminder', $this->getData('numWeeksAfterSubscriptionExpiryReminder'));
173 
174  parent::execute(...$functionArgs);
175 
176  $journalDao = DAORegistry::getDAO('JournalDAO'); /* @var $journalDao JournalDAO */
177  $journalDao->updateObject($journal);
178  }
179 }
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubscriptionPolicyForm\$validNumWeeksAfterExpiry
$validNumWeeksAfterExpiry
Definition: SubscriptionPolicyForm.inc.php:52
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
FormValidatorEmail
Form validation check for email addresses.
Definition: FormValidatorEmail.inc.php:20
Form\getData
getData($key)
Definition: Form.inc.php:220
FormValidatorPost
Form validation check to make sure the form is POSTed.
Definition: FormValidatorPost.inc.php:18
Application\getPaymentManager
static getPaymentManager($context)
Definition: Application.inc.php:226
SubscriptionPolicyForm\fetch
fetch($request, $template=null, $display=false)
Definition: SubscriptionPolicyForm.inc.php:103
SubscriptionPolicyForm\__construct
__construct()
Definition: SubscriptionPolicyForm.inc.php:57
SubscriptionPolicyForm\getLocaleFieldNames
getLocaleFieldNames()
Definition: SubscriptionPolicyForm.inc.php:159
SubscriptionPolicyForm\readInputData
readInputData()
Definition: SubscriptionPolicyForm.inc.php:146
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
SubscriptionPolicyForm\initData
initData()
Definition: SubscriptionPolicyForm.inc.php:121
SubscriptionPolicyForm\$validNumMonthsBeforeExpiry
$validNumMonthsBeforeExpiry
Definition: SubscriptionPolicyForm.inc.php:34
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
SubscriptionPolicyForm
Form for managers to setup subscription policies.
Definition: SubscriptionPolicyForm.inc.php:28
SubscriptionPolicyForm\execute
execute(... $functionArgs)
Definition: SubscriptionPolicyForm.inc.php:166
SubscriptionPolicyForm\$validNumWeeksBeforeExpiry
$validNumWeeksBeforeExpiry
Definition: SubscriptionPolicyForm.inc.php:40
Form\addCheck
addCheck($formValidator)
Definition: Form.inc.php:395
SubscriptionPolicyForm\$validNumMonthsAfterExpiry
$validNumMonthsAfterExpiry
Definition: SubscriptionPolicyForm.inc.php:46
FormValidatorInSet
Form validation check that checks if value is within a certain set.
Definition: FormValidatorInSet.inc.php:18
FormValidatorCSRF
Form validation check to make sure the CSRF token is correct.
Definition: FormValidatorCSRF.inc.php:18
Form
Class defining basic operations for handling HTML forms.
Definition: Form.inc.php:47
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235