Exemplo n.º 1
0
 /**
  * Create file
  *
  * @param   Message
  * @param   array
  * @param   string
  * @return  bool
  */
 public function send(Message $objMessage, array $arrTokens, $strLanguage = '')
 {
     if ($strLanguage == '') {
         $strLanguage = $GLOBALS['TL_LANGUAGE'];
     }
     if (($objLanguage = Language::findByMessageAndLanguageOrFallback($objMessage, $strLanguage)) === null) {
         \System::log(sprintf('Could not find matching language or fallback for message ID "%s" and language "%s".', $objMessage->id, $strLanguage), __METHOD__, TL_ERROR);
         return false;
     }
     $strFileName = String::recursiveReplaceTokensAndTags($objLanguage->file_name, $arrTokens, String::NO_TAGS | String::NO_BREAKS);
     // Escape quotes and line breaks for CSV files
     if ($this->objModel->file_type == 'csv') {
         array_walk($arrTokens, function (&$varValue) {
             $varValue = str_replace(array('"', "\r\n", "\r"), array('""', "\n", "\n"), $varValue);
         });
     }
     // Preserve all tags here as this is pretty useful in XML :-)
     $strContent = String::recursiveReplaceTokensAndTags($objLanguage->file_content, $arrTokens);
     try {
         return $this->save($strFileName, $strContent, (string) $objLanguage->file_storage_mode);
     } catch (\Exception $e) {
         \System::log('Notification Center gateway error: ' . $e->getMessage(), __METHOD__, TL_ERROR);
         return false;
     }
 }
 /**
  * Returns the html body as a string
  * @return  string
  */
 public function getHtmlBody()
 {
     if ($this->objLanguage->email_mode == 'textAndHtml') {
         $objTemplate = new \FrontendTemplate($this->objMessage->email_template);
         $objTemplate->body = $this->objLanguage->email_html;
         $objTemplate->charset = $GLOBALS['TL_CONFIG']['characterSet'];
         // Prevent parseSimpleTokens from stripping important HTML tags
         $GLOBALS['TL_CONFIG']['allowedTags'] .= '<doctype><html><head><meta><style><body>';
         $strHtml = str_replace('<!DOCTYPE', '<DOCTYPE', $objTemplate->parse());
         $strHtml = String::recursiveReplaceTokensAndTags($strHtml, $this->arrTokens);
         $strHtml = \Controller::convertRelativeUrls($strHtml, '', true);
         $strHtml = str_replace('<DOCTYPE', '<!DOCTYPE', $strHtml);
         return $strHtml;
     }
     return '';
 }