/**
  * Constructor
  * @param subscriptionId int leave as default for new subscription
  */
 function IndividualSubscriptionForm($subscriptionId = null, $userId = null)
 {
     parent::Form('subscription/individualSubscriptionForm.tpl');
     parent::SubscriptionForm($subscriptionId, $userId);
     $subscriptionId = isset($subscriptionId) ? (int) $subscriptionId : null;
     $userId = isset($userId) ? (int) $userId : null;
     $journal = Request::getJournal();
     $journalId = $journal->getId();
     if (isset($subscriptionId)) {
         $subscriptionDao = DAORegistry::getDAO('IndividualSubscriptionDAO');
         if ($subscriptionDao->subscriptionExists($subscriptionId)) {
             $this->subscription =& $subscriptionDao->getSubscription($subscriptionId);
         }
     }
     $subscriptionTypeDao = DAORegistry::getDAO('SubscriptionTypeDAO');
     $subscriptionTypes =& $subscriptionTypeDao->getSubscriptionTypesByInstitutional($journalId, false);
     $this->subscriptionTypes =& $subscriptionTypes->toArray();
     $subscriptionTypeCount = count($this->subscriptionTypes);
     if ($subscriptionTypeCount == 0) {
         $this->addError('typeId', __('manager.subscriptions.form.typeRequired'));
         $this->addErrorField('typeId');
     }
     // Ensure subscription type is valid
     $this->addCheck(new FormValidatorCustom($this, 'typeId', 'required', 'manager.subscriptions.form.typeIdValid', create_function('$typeId, $journalId', '$subscriptionTypeDao = DAORegistry::getDAO(\'SubscriptionTypeDAO\'); return ($subscriptionTypeDao->subscriptionTypeExistsByTypeId($typeId, $journalId) && $subscriptionTypeDao->getSubscriptionTypeInstitutional($typeId) == 0);'), array($journal->getId())));
     // Ensure that user does not already have a subscription for this journal
     if (!isset($subscriptionId)) {
         $this->addCheck(new FormValidatorCustom($this, 'userId', 'required', 'manager.subscriptions.form.subscriptionExists', array(DAORegistry::getDAO('IndividualSubscriptionDAO'), 'subscriptionExistsByUserForJournal'), array($journalId), true));
     } else {
         $this->addCheck(new FormValidatorCustom($this, 'userId', 'required', 'manager.subscriptions.form.subscriptionExists', create_function('$userId, $journalId, $subscriptionId', '$subscriptionDao = DAORegistry::getDAO(\'IndividualSubscriptionDAO\'); $checkId = $subscriptionDao->getSubscriptionIdByUser($userId, $journalId); return ($checkId == 0 || $checkId == $subscriptionId) ? true : false;'), array($journalId, $subscriptionId)));
     }
 }
 /**
  * Constructor
  * @param subscriptionId int leave as default for new subscription
  */
 function InstitutionalSubscriptionForm($subscriptionId = null, $userId = null)
 {
     parent::Form('subscription/institutionalSubscriptionForm.tpl');
     parent::SubscriptionForm($subscriptionId, $userId);
     $subscriptionId = isset($subscriptionId) ? (int) $subscriptionId : null;
     $userId = isset($userId) ? (int) $userId : null;
     $journal =& Request::getJournal();
     $journalId = $journal->getId();
     if (isset($subscriptionId)) {
         $subscriptionDao =& DAORegistry::getDAO('InstitutionalSubscriptionDAO');
         if ($subscriptionDao->subscriptionExists($subscriptionId)) {
             $this->subscription =& $subscriptionDao->getSubscription($subscriptionId);
         }
     }
     $subscriptionTypeDao =& DAORegistry::getDAO('SubscriptionTypeDAO');
     $subscriptionTypes =& $subscriptionTypeDao->getSubscriptionTypesByInstitutional($journalId, true);
     $this->subscriptionTypes =& $subscriptionTypes->toArray();
     $subscriptionTypeCount = count($this->subscriptionTypes);
     if ($subscriptionTypeCount == 0) {
         $this->addError('typeId', __('manager.subscriptions.form.typeRequired'));
         $this->addErrorField('typeId');
     }
     // Ensure subscription type is valid
     $this->addCheck(new FormValidatorCustom($this, 'typeId', 'required', 'manager.subscriptions.form.typeIdValid', create_function('$typeId, $journalId', '$subscriptionTypeDao =& DAORegistry::getDAO(\'SubscriptionTypeDAO\'); return ($subscriptionTypeDao->subscriptionTypeExistsByTypeId($typeId, $journalId) && $subscriptionTypeDao->getSubscriptionTypeInstitutional($typeId) == 1);'), array($journal->getId())));
     // Ensure institution name is provided
     $this->addCheck(new FormValidator($this, 'institutionName', 'required', 'manager.subscriptions.form.institutionNameRequired'));
     // If provided, domain is valid
     $this->addCheck(new FormValidatorRegExp($this, 'domain', 'optional', 'manager.subscriptions.form.domainValid', '/^' . '[A-Z0-9]+([\\-_\\.][A-Z0-9]+)*' . '\\.' . '[A-Z]{2,4}' . '$/i'));
 }