/**
  * Save email template.
  */
 function execute()
 {
     $press =& Request::getPress();
     $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
     $emailTemplate =& $emailTemplateDao->getLocaleEmailTemplate($this->emailKey, $press->getId());
     if (!$emailTemplate) {
         $emailTemplate = new LocaleEmailTemplate();
         $emailTemplate->setCustomTemplate(true);
         $emailTemplate->setCanDisable(false);
         $emailTemplate->setEnabled(true);
         $emailTemplate->setEmailKey($this->getData('emailKey'));
     } else {
         $emailTemplate->setEmailId($this->getData('emailId'));
         if ($emailTemplate->getCanDisable()) {
             $emailTemplate->setEnabled($this->getData('enabled'));
         }
     }
     $emailTemplate->setAssocType(ASSOC_TYPE_PRESS);
     $emailTemplate->setAssocId($press->getPressId());
     $supportedLocales = $press->getSupportedLocaleNames();
     if (!empty($supportedLocales)) {
         foreach ($press->getSupportedLocaleNames() as $localeKey => $localeName) {
             $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
             $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
         }
     } else {
         $localeKey = Locale::getLocale();
         $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
         $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
     }
     if ($emailTemplate->getEmailId() != null) {
         $emailTemplateDao->updateLocaleEmailTemplate($emailTemplate);
     } else {
         $emailTemplateDao->insertLocaleEmailTemplate($emailTemplate);
     }
 }
Example #2
0
 /**
  * Save email template.
  */
 function execute()
 {
     $conferenceId = $this->conference->getId();
     $emailTemplateDao =& DAORegistry::getDAO('EmailTemplateDAO');
     $emailTemplate =& $emailTemplateDao->getLocaleEmailTemplate($this->emailKey, $conferenceId);
     if (!$emailTemplate) {
         $emailTemplate = new LocaleEmailTemplate();
         $emailTemplate->setCustomTemplate(true);
         $emailTemplate->setCanDisable(false);
         $emailTemplate->setEnabled(true);
         $emailTemplate->setEmailKey($this->getData('emailKey'));
     } else {
         $emailTemplate->setEmailId($this->getData('emailId'));
         if ($emailTemplate->getCanDisable()) {
             $emailTemplate->setEnabled($this->getData('enabled'));
         }
         $foo = $emailTemplate->getEmailId();
     }
     $emailTemplate->setConferenceId($conferenceId);
     $emailTemplate->setEventId($eventId);
     $supportedLocales = $this->conference->getSupportedLocaleNames();
     if (!empty($supportedLocales)) {
         foreach ($conference->getSupportedLocaleNames() as $localeKey => $localeName) {
             $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
             $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
         }
     } else {
         $localeKey = Locale::getLocale();
         $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
         $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
     }
     if ($emailTemplate->getEmailId() != null) {
         $emailTemplateDao->updateLocaleEmailTemplate($emailTemplate);
     } else {
         $emailTemplateDao->insertLocaleEmailTemplate($emailTemplate);
     }
 }
    /**
     * Internal function to return an email template object from a row.
     * @param $row array
     * @return LocaleEmailTemplate
     */
    function &_returnLocaleEmailTemplateFromRow(&$row)
    {
        $emailTemplate = new LocaleEmailTemplate();
        $emailTemplate->setEmailId($row['email_id']);
        $emailTemplate->setAssocType($row['assoc_type']);
        $emailTemplate->setAssocId($row['assoc_id']);
        $emailTemplate->setEmailKey($row['email_key']);
        $emailTemplate->setEnabled($row['enabled'] == null ? 1 : $row['enabled']);
        $emailTemplate->setCanDisable($row['can_disable']);
        $emailTemplate->setFromRoleId($row['from_role_id']);
        $emailTemplate->setToRoleId($row['to_role_id']);
        $emailTemplate->setCustomTemplate(false);
        if (!HookRegistry::call('EmailTemplateDAO::_returnLocaleEmailTemplateFromRow', array(&$emailTemplate, &$row))) {
            $result =& $this->retrieve('SELECT	dd.locale,
					dd.description,
					COALESCE(ed.subject, dd.subject) AS subject,
					COALESCE(ed.body, dd.body) AS body
				FROM	email_templates_default_data dd
					LEFT JOIN email_templates_data ed ON (dd.email_key = ed.email_key AND dd.locale = ed.locale AND ed.assoc_type = ? AND ed.assoc_id = ?)
				WHERE	dd.email_key = ?', array($row['assoc_type'], $row['assoc_id'], $row['email_key']));
            while (!$result->EOF) {
                $dataRow =& $result->GetRowAssoc(false);
                $emailTemplate->addLocale($dataRow['locale']);
                $emailTemplate->setSubject($dataRow['locale'], $dataRow['subject']);
                $emailTemplate->setBody($dataRow['locale'], $dataRow['body']);
                $emailTemplate->setDescription($dataRow['locale'], $dataRow['description']);
                $result->MoveNext();
            }
            $result->Close();
            unset($result);
            // Retrieve custom email contents as well; this is done in PHP to avoid
            // using a SQL outer join or union.
            $result =& $this->retrieve('SELECT	ed.locale,
					ed.subject,
					ed.body
				FROM	email_templates_data ed
					LEFT JOIN email_templates_default_data dd ON (ed.email_key = dd.email_key AND dd.locale = ed.locale)
				WHERE	ed.assoc_type = ? AND
					ed.assoc_id = ? AND
					ed.email_key = ? AND
					dd.email_key IS NULL', array($row['assoc_type'], $row['assoc_id'], $row['email_key']));
            while (!$result->EOF) {
                $dataRow =& $result->GetRowAssoc(false);
                $emailTemplate->addLocale($dataRow['locale']);
                $emailTemplate->setSubject($dataRow['locale'], $dataRow['subject']);
                $emailTemplate->setBody($dataRow['locale'], $dataRow['body']);
                $result->MoveNext();
                $emailTemplate->setCustomTemplate(true);
            }
            $result->Close();
            unset($result);
        }
        return $emailTemplate;
    }
 /**
  * Save email template.
  */
 function execute()
 {
     $context = $this->getContext();
     $emailTemplateDao = DAORegistry::getDAO('EmailTemplateDAO');
     $emailTemplate = $emailTemplateDao->getLocaleEmailTemplate($this->getEmailKey(), $context->getId());
     if (!$emailTemplate) {
         $emailTemplate = new LocaleEmailTemplate();
         $emailTemplate->setCustomTemplate(true);
         $emailTemplate->setCanDisable(false);
         $emailTemplate->setEnabled(true);
         $emailTemplate->setEmailKey($this->getEmailKey());
     }
     $emailTemplate->setAssocType($context->getAssocType());
     $emailTemplate->setAssocId($context->getId());
     $supportedLocales = $context->getSupportedLocaleNames();
     if (!empty($supportedLocales)) {
         foreach ($context->getSupportedLocaleNames() as $localeKey => $localeName) {
             $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
             $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
         }
     } else {
         $localeKey = AppLocale::getLocale();
         $emailTemplate->setSubject($localeKey, $this->_data['subject'][$localeKey]);
         $emailTemplate->setBody($localeKey, $this->_data['body'][$localeKey]);
     }
     if ($emailTemplate->getEmailId() != null) {
         $emailTemplateDao->updateLocaleEmailTemplate($emailTemplate);
     } else {
         $emailTemplateDao->insertLocaleEmailTemplate($emailTemplate);
     }
 }