• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/settings/preparedEmails/form/PreparedEmailForm.inc.php

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       // Validation checks for this form
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 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1