From c876276b75b48d9cd92d01982b6202dc0b501eb9 Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Mon, 26 Feb 2018 12:33:42 -0800 Subject: [PATCH] Fix single underscores in email templates provides a better fix for #1800 --- CHANGELOG.md | 1 + src/services/EmailService.php | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3cc6ff8955..c152062a141 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Fixed - Fixed a bug where entry version data was not including newly-created Matrix block IDs, so they would be re-created from scratch when loading the version. ([#2498](https://github.com/craftcms/cms/issues/2498)) +- Fixed an error that could occur if an email template included any Twig filters with a single underscore. ## 2.6.3010 - 2018-02-21 diff --git a/src/services/EmailService.php b/src/services/EmailService.php index 0a35c1b7110..27f9410af4c 100644 --- a/src/services/EmailService.php +++ b/src/services/EmailService.php @@ -438,11 +438,17 @@ private function _sendEmail(UserModel $user, EmailModel $emailModel, $variables } else { - // TODO: This won't be necessary in 3.0 thanks to Parsedown - $emailModel->body = preg_replace('/(?<=[a-zA-Z])_(?=[a-zA-Z])/', '\_', $emailModel->body); - // They didn't provide an htmlBody, so markdown the body. - $renderedHtmlBody = craft()->templates->renderString(StringHelper::parseMarkdown($emailModel->body), $variables); + + // Don't parse _text_ as italics because https://github.com/craftcms/cms/issues/1800 + if (!class_exists('\Markdown_Parser', false)) + { + require_once craft()->path->getFrameworkPath().'vendors/markdown/markdown.php'; + } + $md = new \Markdown_Parser(); + unset($md->em_relist['_']); + + $renderedHtmlBody = craft()->templates->renderString($md->transform($emailModel->body), $variables); $email->msgHTML($renderedHtmlBody); }