/** * 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 ''; }