/** * Render add the css rules as inline styles. * * @param RenderMessageEvent $event * * @return PreRenderedMessageTemplateInterface * @SuppressWarnings(PHPMD.LongVariable) */ public function renderMessage(RenderMessageEvent $event) { if (!$event->getLayout()->getCssToInline()) { return; } $content = $event->getPreRenderedMessageTemplate()->getContent(); $libxmlUseInternalErrors = libxml_use_internal_errors(true); $document = new \DOMDocument('1.0', 'UTF-8'); $document->formatOutput = true; $document->loadHTML($content); $xpath = new \DOMXPath($document); $styles = $xpath->query('/html/head/style'); for ($i = 0; $i < $styles->length; $i++) { if ($i != 0) { $style = $styles->item($i); $inlineStyle = $style; $style->parentNode->removeChild($style); } } $content = $document->saveHTML(); $htmlInStyle = new CssToInlineStyles($content, $inlineStyle->textContent); $content = $htmlInStyle->convert(); $content = str_replace(array('%5B', '%5D', '%7B', '%7D', '%20'), array('[', ']', '{', '}', ' '), $content); $content = preg_replace_callback('~\\{%.*%\\}~U', function ($matches) { return html_entity_decode($matches[0], ENT_QUOTES, 'UTF-8'); }, $content); $content = preg_replace_callback('~##.*##~U', function ($matches) { return html_entity_decode($matches[0], ENT_QUOTES, 'UTF-8'); }, $content); $event->getPreRenderedMessageTemplate()->setContent($content); libxml_use_internal_errors($libxmlUseInternalErrors); return; }
/** * @param RenderMessageEvent $event * * @throws \Exception * @SuppressWarnings(PHPMD.LongVariables) */ public function renderMessage(RenderMessageEvent $event) { if ($event->getPreRenderedMessageTemplate()) { return; } $message = $event->getMessage(); $layout = $event->getLayout(); if ($layout->getType() != 'mailChimp') { return; } $blueprintRenderer = new BlueprintRenderer(); $preRenderedMessageTemplate = $blueprintRenderer->renderMessage($message, $layout); $event->setPreRenderedMessageTemplate($preRenderedMessageTemplate); }
/** * @param RenderMessageEvent $event * @SuppressWarnings(PHPMD.LongVariable) */ public function renderMessage(RenderMessageEvent $event) { if ($event->getPreRenderedMessageTemplate()) { return; } global $container; /** @var \Avisota\Contao\Message\Core\Renderer\MessageRendererInterface $renderer */ $renderer = $container['avisota.message.renderer']; $content = $renderer->renderCell($event->getMessage(), 'center', $event->getLayout()); $preRenderedMessageTemplate = new MutablePreRenderedMessageTemplate($event->getMessage(), implode(PHP_EOL, $content)); $event->setPreRenderedMessageTemplate($preRenderedMessageTemplate); }