00001 <?php
00002
00017 import('lib.pkp.classes.form.Form');
00018
00019 class PreparedEmailForm extends Form {
00020
00022 var $_emailKey;
00023
00025 var $_press;
00026
00031 function PreparedEmailForm($emailKey = null, &$press) {
00032 parent::Form('controllers/grid/settings/preparedEmails/form/emailTemplateForm.tpl');
00033
00034 $this->_press =& $press;
00035 $this->setEmailKey($emailKey);
00036
00037
00038 $this->addCheck(new FormValidatorArray($this, 'subject', 'required', 'manager.emails.form.subjectRequired'));
00039 $this->addCheck(new FormValidatorArray($this, 'body', 'required', 'manager.emails.form.bodyRequired'));
00040 $this->addCheck(new FormValidatorPost($this));
00041 }
00042
00047 function setEmailKey($emailKey) {
00048 $this->_emailKey = $emailKey;
00049 }
00050
00055 function getEmailKey() {
00056 return $this->_emailKey;
00057 }
00058
00063 function &getPress() {
00064 return $this->_press;
00065 }
00066
00070 function initData(&$request) {
00071 $press =& $this->getPress();
00072 $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
00073 $emailTemplate =& $emailTemplateDao->getLocaleEmailTemplate($this->getEmailKey(), $press->getId());
00074
00075 if ($emailTemplate) {
00076 $subject = array();
00077 $body = array();
00078 foreach ($emailTemplate->getLocales() as $locale) {
00079 $subject[$locale] = $emailTemplate->getSubject($locale);
00080 $body[$locale] = $emailTemplate->getBody($locale);
00081 }
00082
00083 $this->_data = array(
00084 'emailKey' => $emailTemplate->getEmailKey(),
00085 'subject' => $subject,
00086 'body' => $body,
00087 'description' => $emailTemplate->getDescription(AppLocale::getLocale())
00088 );
00089
00090 } else {
00091 $this->setData('isNewTemplate', true);
00092 }
00093
00094 AppLocale::requireComponents(LOCALE_COMPONENT_APPLICATION_COMMON, LOCALE_COMPONENT_PKP_MANAGER);
00095 $this->setData('supportedLocales', $press->getSupportedLocaleNames());
00096 }
00097
00101 function readInputData() {
00102 $this->readUserVars(array('subject', 'body', 'description'));
00103
00104 $press =& $this->getPress();
00105 $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
00106 $emailTemplate =& $emailTemplateDao->getLocaleEmailTemplate($this->getEmailKey(), $press->getId());
00107 if (!$emailTemplate) $this->setData('isNewTemplate', true);
00108 }
00109
00113 function getLocaleFieldNames() {
00114 return array('subject', 'body');
00115 }
00116
00120 function execute() {
00121 $press =& $this->getPress();
00122
00123 $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
00124 $emailTemplate =& $emailTemplateDao->getLocaleEmailTemplate($this->getEmailKey(), $press->getId());
00125
00126 if (!$emailTemplate) {
00127 $emailTemplate = new LocaleEmailTemplate();
00128 $emailTemplate->setCustomTemplate(true);
00129 $emailTemplate->setCanDisable(false);
00130 $emailTemplate->setEnabled(true);
00131 $emailTemplate->setEmailKey($this->getEmailKey());
00132 }
00133
00134 $emailTemplate->setAssocType(ASSOC_TYPE_PRESS);
00135 $emailTemplate->setAssocId($press->getId());
00136
00137 $supportedLocales = $press->getSupportedLocaleNames();
00138 if (!empty($supportedLocales)) {
00139 foreach ($press->getSupportedLocaleNames() as $localeKey => $localeName) {
00140 $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
00141 $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
00142 }
00143 } else {
00144 $localeKey = AppLocale::getLocale();
00145 $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
00146 $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
00147 }
00148
00149 if ($emailTemplate->getEmailId() != null) {
00150 $emailTemplateDao->updateLocaleEmailTemplate($emailTemplate);
00151 } else {
00152 $emailTemplateDao->insertLocaleEmailTemplate($emailTemplate);
00153 }
00154 }
00155 }
00156
00157 ?>