00001 <?php
00002
00015
00016
00017
00018 import('form.Form');
00019
00020 class SubscriptionTypeForm extends Form {
00022 var $typeId;
00023
00025 var $validFormats;
00026
00028 var $validCurrencies;
00029
00034 function SubscriptionTypeForm($typeId = null) {
00035
00036 $this->validFormats = array (
00037 SUBSCRIPTION_TYPE_FORMAT_ONLINE => Locale::translate('manager.subscriptionTypes.format.online'),
00038 SUBSCRIPTION_TYPE_FORMAT_PRINT => Locale::translate('manager.subscriptionTypes.format.print'),
00039 SUBSCRIPTION_TYPE_FORMAT_PRINT_ONLINE => Locale::translate('manager.subscriptionTypes.format.printOnline')
00040 );
00041
00042 $currencyDao = &DAORegistry::getDAO('CurrencyDAO');
00043 $currencies = &$currencyDao->getCurrencies();
00044 $this->validCurrencies = array();
00045 while (list(, $currency) = each($currencies)) {
00046 $this->validCurrencies[$currency->getCodeAlpha()] = $currency->getName() . ' (' . $currency->getCodeAlpha() . ')';
00047 }
00048
00049 $this->typeId = isset($typeId) ? (int) $typeId : null;
00050 $journal = &Request::getJournal();
00051
00052 parent::Form('subscription/subscriptionTypeForm.tpl');
00053
00054
00055 $this->addCheck(new FormValidatorLocale($this, 'name', 'required', 'manager.subscriptionTypes.form.typeNameRequired'));
00056
00057
00058 $this->addCheck(new FormValidator($this, 'cost', 'required', 'manager.subscriptionTypes.form.costRequired'));
00059 $this->addCheck(new FormValidatorCustom($this, 'cost', 'required', 'manager.subscriptionTypes.form.costNumeric', create_function('$cost', 'return (is_numeric($cost) && $cost >= 0);')));
00060
00061
00062 $this->addCheck(new FormValidator($this, 'currency', 'required', 'manager.subscriptionTypes.form.currencyRequired'));
00063 $this->addCheck(new FormValidatorInSet($this, 'currency', 'required', 'manager.subscriptionTypes.form.currencyValid', array_keys($this->validCurrencies)));
00064
00065
00066 $this->addCheck(new FormValidator($this, 'duration', 'required', 'manager.subscriptionTypes.form.durationRequired'));
00067 $this->addCheck(new FormValidatorCustom($this, 'duration', 'required', 'manager.subscriptionTypes.form.durationNumeric', create_function('$duration', 'return (is_numeric($duration) && $duration >= 0);')));
00068
00069
00070 $this->addCheck(new FormValidator($this, 'format', 'required', 'manager.subscriptionTypes.form.formatRequired'));
00071 $this->addCheck(new FormValidatorInSet($this, 'format', 'required', 'manager.subscriptionTypes.form.formatValid', array_keys($this->validFormats)));
00072
00073
00074 $this->addCheck(new FormValidatorInSet($this, 'institutional', 'optional', 'manager.subscriptionTypes.form.institutionalValid', array('1')));
00075
00076
00077 $this->addCheck(new FormValidatorInSet($this, 'membership', 'optional', 'manager.subscriptionTypes.form.membershipValid', array('1')));
00078
00079
00080 $this->addCheck(new FormValidatorInSet($this, 'disable_public_display', 'optional', 'manager.subscriptionTypes.form.publicValid', array('1')));
00081 $this->addCheck(new FormValidatorPost($this));
00082 }
00083
00088 function getLocaleFieldNames() {
00089 $subscriptionTypeDao =& DAORegistry::getDAO('SubscriptionTypeDAO');
00090 return $subscriptionTypeDao->getLocaleFieldNames();
00091 }
00092
00096 function display() {
00097 $templateMgr = &TemplateManager::getManager();
00098 $templateMgr->assign('typeId', $this->typeId);
00099 $templateMgr->assign('validCurrencies', $this->validCurrencies);
00100 $templateMgr->assign('validFormats', $this->validFormats);
00101 $templateMgr->assign('helpTopicId', 'journal.managementPages.subscriptions');
00102
00103 parent::display();
00104 }
00105
00109 function initData() {
00110 if (isset($this->typeId)) {
00111 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00112 $subscriptionType = &$subscriptionTypeDao->getSubscriptionType($this->typeId);
00113
00114 if ($subscriptionType != null) {
00115 $this->_data = array(
00116 'name' => $subscriptionType->getName(null),
00117 'description' => $subscriptionType->getDescription(null),
00118 'cost' => $subscriptionType->getCost(),
00119 'currency' => $subscriptionType->getCurrencyCodeAlpha(),
00120 'duration' => $subscriptionType->getDuration(),
00121 'format' => $subscriptionType->getFormat(),
00122 'institutional' => $subscriptionType->getInstitutional(),
00123 'membership' => $subscriptionType->getMembership(),
00124 'disable_public_display' => $subscriptionType->getDisablePublicDisplay()
00125 );
00126
00127 } else {
00128 $this->typeId = null;
00129 }
00130 }
00131 }
00132
00136 function readInputData() {
00137 $this->readUserVars(array('name', 'description', 'cost', 'currency', 'duration', 'format', 'institutional', 'membership', 'disable_public_display'));
00138 }
00139
00143 function execute() {
00144 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00145 $journal = &Request::getJournal();
00146
00147 if (isset($this->typeId)) {
00148 $subscriptionType = &$subscriptionTypeDao->getSubscriptionType($this->typeId);
00149 }
00150
00151 if (!isset($subscriptionType)) {
00152 $subscriptionType = &new SubscriptionType();
00153 }
00154
00155 $subscriptionType->setJournalId($journal->getJournalId());
00156 $subscriptionType->setName($this->getData('name'), null);
00157 $subscriptionType->setDescription($this->getData('description'), null);
00158 $subscriptionType->setCost(round($this->getData('cost'), 2));
00159 $subscriptionType->setCurrencyCodeAlpha($this->getData('currency'));
00160 $subscriptionType->setDuration((int)$this->getData('duration'));
00161 $subscriptionType->setFormat($this->getData('format'));
00162 $subscriptionType->setInstitutional($this->getData('institutional') == null ? 0 : $this->getData('institutional'));
00163 $subscriptionType->setMembership($this->getData('membership') == null ? 0 : $this->getData('membership'));
00164 $subscriptionType->setDisablePublicDisplay($this->getData('disable_public_display') == null ? 0 : $this->getData('disable_public_display'));
00165
00166
00167 if ($subscriptionType->getTypeId() != null) {
00168 $subscriptionTypeDao->updateSubscriptionType($subscriptionType);
00169 } else {
00170 $subscriptionType->setSequence(REALLY_BIG_NUMBER);
00171 $subscriptionTypeDao->insertSubscriptionType($subscriptionType);
00172
00173
00174 $subscriptionTypeDao->resequenceSubscriptionTypes($subscriptionType->getJournalId());
00175 }
00176 }
00177 }
00178
00179 ?>