16 import(
'classes.subscription.form.SubscriptionForm');
25 parent::__construct(
'payments/institutionalSubscriptionForm.tpl', $subscriptionId);
27 $subscriptionId = isset($subscriptionId) ? (int) $subscriptionId :
null;
30 $journal = $request->getJournal();
31 $journalId = $journal->getId();
33 if (isset($subscriptionId)) {
35 if ($subscriptionDao->subscriptionExists($subscriptionId)) {
36 $this->subscription = $subscriptionDao->getById($subscriptionId);
41 $subscriptionTypeIterator = $subscriptionTypeDao->getByInstitutional($journalId,
true);
42 $this->subscriptionTypes = array();
43 while ($subscriptionType = $subscriptionTypeIterator->next()) {
44 $this->subscriptionTypes[$subscriptionType->getId()] = $subscriptionType->getSummaryString();
47 if (count($this->subscriptionTypes) == 0) {
48 $this->
addError(
'typeId', __(
'manager.subscriptions.form.typeRequired'));
53 $this->
addCheck(
new FormValidatorCustom($this,
'typeId',
'required',
'manager.subscriptions.form.typeIdValid',
function($typeId) use ($journalId) {
55 return ($subscriptionTypeDao->subscriptionTypeExistsByTypeId($typeId, $journalId) && $subscriptionTypeDao->getSubscriptionTypeInstitutional($typeId) == 1);
59 $this->
addCheck(
new FormValidator($this,
'institutionName',
'required',
'manager.subscriptions.form.institutionNameRequired'));
63 '[A-Z0-9]+([\-_\.][A-Z0-9]+)*' .
75 if (isset($this->subscription)) {
76 $this->_data = array_merge(
79 'institutionName' => $this->subscription->getInstitutionName(),
80 'institutionMailingAddress' => $this->subscription->getInstitutionMailingAddress(),
81 'domain' => $this->subscription->getDomain(),
82 'ipRanges' => join($this->subscription->getIPRanges(),
"\r\n"),
92 parent::readInputData();
94 $this->
readUserVars(array(
'institutionName',
'institutionMailingAddress',
'domain',
'ipRanges'));
97 $ipRanges = $this->
getData(
'ipRanges');
98 $ipRangeProvided = !empty(trim($ipRanges));
101 $subscriptionType = $subscriptionTypeDao->getById($this->
getData(
'typeId'));
104 if ($subscriptionType->getFormat() != SUBSCRIPTION_TYPE_FORMAT_PRINT) {
105 $this->
addCheck(
new FormValidatorCustom($this,
'domain',
'optional',
'manager.subscriptions.form.domainIPRangeRequired',
function($domain) use ($ipRangeProvided) {
106 return ($domain !=
'' || $ipRangeProvided) ?
true :
false;
111 if ($ipRangeProvided) {
112 $this->
addCheck(
new FormValidatorCustom($this,
'ipRanges',
'required',
'manager.subscriptions.form.ipRangeValid',
function($ipRanges) {
116 '((([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]|[' . SUBSCRIPTION_IP_RANGE_WILDCARD .
'])([.]([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]|[' . SUBSCRIPTION_IP_RANGE_WILDCARD .
'])){3}((\s)*[' . SUBSCRIPTION_IP_RANGE_RANGE .
'](\s)*([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]|[' . SUBSCRIPTION_IP_RANGE_WILDCARD .
'])([.]([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5]|[' . SUBSCRIPTION_IP_RANGE_WILDCARD .
'])){3}){0,1})|(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])([.]([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])){3}([\/](([3][0-2]{0,1})|([1-2]{0,1}[0-9])))))' .
119 )
return false;
return true;
129 if (!isset($this->subscription)) {
130 import(
'classes.subscription.InstitutionalSubscription');
135 parent::execute(...$functionArgs);
137 $this->subscription->setInstitutionName($this->
getData(
'institutionName'));
138 $this->subscription->setInstitutionMailingAddress($this->
getData(
'institutionMailingAddress'));
139 $this->subscription->setDomain($this->
getData(
'domain'));
141 $ipRanges = $this->
getData(
'ipRanges');
142 $ipRanges = explode(
"\r\n", trim($ipRanges));
143 $this->subscription->setIPRanges($ipRanges);
147 $institutionalSubscriptionDao->insertObject($this->subscription);
149 $institutionalSubscriptionDao->updateObject($this->subscription);
153 if ($this->_data[
'notifyEmail'] == 1) {
155 if (!$mail->send()) {
156 import(
'classes.notification.NotificationManager');
159 $notificationMgr->createTrivialNotification($request->getUser()->getId(), NOTIFICATION_TYPE_ERROR, array(
'contents' => __(
'email.compose.error')));