diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 42c7c30777..d280134ae2 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -247,6 +247,9 @@ class ContainerConfigurator implements IContainerConfigurator { // WordPress $container->autowire(\MailPoet\WP\Emoji::class)->setPublic(true); $container->autowire(\MailPoet\WP\Functions::class)->setPublic(true); + // Third party classes + $container->autowire(\csstidy::class); + return $container; } diff --git a/lib/WooCommerce/TransactionalEmails/Renderer.php b/lib/WooCommerce/TransactionalEmails/Renderer.php index df1c1b7fe8..8293482287 100644 --- a/lib/WooCommerce/TransactionalEmails/Renderer.php +++ b/lib/WooCommerce/TransactionalEmails/Renderer.php @@ -10,13 +10,17 @@ use MailPoet\Newsletter\Renderer\Renderer as NewsletterRenderer; class Renderer { const CONTENT_CONTAINER_ID = 'mailpoet_woocommerce_container'; + /** @var csstidy */ + private $css_parser; + /** @var string */ private $html_before_content; /** @var string */ private $html_after_content; - function __construct() { + function __construct(csstidy $css_parser) { + $this->css_parser = $css_parser; $this->html_before_content = ''; $this->html_after_content = ''; } @@ -44,22 +48,21 @@ class Renderer { } public function prefixCss($css) { - $parser = new csstidy(); - $parser->settings['compress_colors'] = false; - $parser->parse($css); - foreach ($parser->css as $index => $rules) { - $parser->css[$index] = []; + $this->css_parser->settings['compress_colors'] = false; + $this->css_parser->parse($css); + foreach ($this->css_parser->css as $index => $rules) { + $this->css_parser->css[$index] = []; foreach ($rules as $selectors => $properties) { $selectors = explode(',', $selectors); $selectors = array_map(function($selector) { return '#' . self::CONTENT_CONTAINER_ID . ' ' . $selector; }, $selectors); $selectors = implode(',', $selectors); - $parser->css[$index][$selectors] = $properties; + $this->css_parser->css[$index][$selectors] = $properties; } } /** @var \csstidy_print */ - $print = $parser->print; + $print = $this->css_parser->print; return $print->plain(); } } \ No newline at end of file diff --git a/tests/integration/WooCommerce/TransactionalEmails/RendererTest.php b/tests/integration/WooCommerce/TransactionalEmails/RendererTest.php index 79146a56af..720f272c82 100644 --- a/tests/integration/WooCommerce/TransactionalEmails/RendererTest.php +++ b/tests/integration/WooCommerce/TransactionalEmails/RendererTest.php @@ -33,7 +33,7 @@ class RendererTest extends \MailPoetTest { } function testGetHTMLBeforeContent() { - $renderer = new Renderer; + $renderer = new Renderer(new \csstidy); $renderer->render($this->newsletter); $html = $renderer->getHTMLBeforeContent('Heading Text'); expect($html)->contains('Some text before heading'); @@ -43,7 +43,7 @@ class RendererTest extends \MailPoetTest { } function testGetHTMLAfterContent() { - $renderer = new Renderer; + $renderer = new Renderer(new \csstidy); $renderer->render($this->newsletter); $html = $renderer->getHTMLAfterContent('Heading Text'); expect($html)->notContains('Some text before heading'); @@ -53,7 +53,7 @@ class RendererTest extends \MailPoetTest { } function testPrefixCss() { - $renderer = new Renderer; + $renderer = new Renderer(new \csstidy); $css = $renderer->prefixCss(' #some_id {color: black} .some-class {height: 50px; width: 30px}