Remove public properties from renderer

[MAILPOET-2899]
This commit is contained in:
Pavel Dohnal
2020-05-26 15:38:14 +02:00
committed by Veljko V
parent c9b1c549c1
commit f8a16b5e5a
6 changed files with 71 additions and 26 deletions

View File

@ -297,6 +297,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Util\Url::class)->setPublic(true); $container->autowire(\MailPoet\Util\Url::class)->setPublic(true);
$container->autowire(\MailPoet\Util\Installation::class); $container->autowire(\MailPoet\Util\Installation::class);
$container->autowire(\MailPoet\Util\License\Features\Subscribers::class); $container->autowire(\MailPoet\Util\License\Features\Subscribers::class);
$container->autowire(\MailPoet\Util\License\License::class);
// WooCommerce // WooCommerce
$container->autowire(\MailPoet\WooCommerce\Helper::class)->setPublic(true); $container->autowire(\MailPoet\WooCommerce\Helper::class)->setPublic(true);
$container->autowire(\MailPoet\WooCommerce\Settings::class)->setPublic(true); $container->autowire(\MailPoet\WooCommerce\Settings::class)->setPublic(true);

View File

@ -26,9 +26,9 @@ class Renderer {
/** @var Bridge */ /** @var Bridge */
private $bridge; private $bridge;
public $premiumActivated; /** @var License */
public $mssActivated; private $license;
private $template;
const NEWSLETTER_TEMPLATE = 'Template.html'; const NEWSLETTER_TEMPLATE = 'Template.html';
const FILTER_POST_PROCESS = 'mailpoet_rendering_post_process'; const FILTER_POST_PROCESS = 'mailpoet_rendering_post_process';
@ -37,16 +37,15 @@ class Renderer {
Columns\Renderer $columnsRenderer, Columns\Renderer $columnsRenderer,
Preprocessor $preprocessor, Preprocessor $preprocessor,
\MailPoetVendor\CSS $cSSInliner, \MailPoetVendor\CSS $cSSInliner,
Bridge $bridge Bridge $bridge,
License $license
) { ) {
$this->blocksRenderer = $blocksRenderer; $this->blocksRenderer = $blocksRenderer;
$this->columnsRenderer = $columnsRenderer; $this->columnsRenderer = $columnsRenderer;
$this->preprocessor = $preprocessor; $this->preprocessor = $preprocessor;
$this->cSSInliner = $cSSInliner; $this->cSSInliner = $cSSInliner;
$this->bridge = $bridge; $this->bridge = $bridge;
$this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE); $this->license = $license;
$this->premiumActivated = License::getLicense();
$this->mssActivated = $this->bridge->isMPSendingServiceEnabled();
} }
/** /**
@ -64,7 +63,11 @@ class Renderer {
? $body['globalStyles'] ? $body['globalStyles']
: []; : [];
if (!$this->premiumActivated && !$this->mssActivated && !$preview) { if (
!$this->license->hasLicense()
&& !$this->bridge->isMailpoetSendingServiceEnabled()
&& !$preview
) {
$content = $this->addMailpoetLogoContentBlock($content, $styles); $content = $this->addMailpoetLogoContentBlock($content, $styles);
} }
@ -73,13 +76,16 @@ class Renderer {
$renderedStyles = $this->renderStyles($styles); $renderedStyles = $this->renderStyles($styles);
$customFontsLinks = StylesHelper::getCustomFontsLinks($styles); $customFontsLinks = StylesHelper::getCustomFontsLinks($styles);
$template = $this->injectContentIntoTemplate($this->template, [ $template = $this->injectContentIntoTemplate(
htmlspecialchars($newsletter['subject']), (string)file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE),
$renderedStyles, [
$customFontsLinks, htmlspecialchars($newsletter['subject']),
EHelper::escapeHtmlText($newsletter['preheader']), $renderedStyles,
$renderedBody, $customFontsLinks,
]); EHelper::escapeHtmlText($newsletter['preheader']),
$renderedBody,
]
);
if ($template === null) { if ($template === null) {
$template = ''; $template = '';
} }

View File

@ -53,6 +53,16 @@ class Bridge {
} }
} }
public function isMailpoetSendingServiceEnabled() {
try {
$mailerConfig = SettingsController::getInstance()->get(Mailer::MAILER_CONFIG_SETTING_NAME);
return !empty($mailerConfig['method'])
&& $mailerConfig['method'] === Mailer::METHOD_MAILPOET;
} catch (\Exception $e) {
return false;
}
}
public static function isMSSKeySpecified() { public static function isMSSKeySpecified() {
$settings = SettingsController::getInstance(); $settings = SettingsController::getInstance();
$key = $settings->get(self::API_KEY_SETTING_NAME); $key = $settings->get(self::API_KEY_SETTING_NAME);

View File

@ -13,4 +13,8 @@ class License {
} }
return $license; return $license;
} }
public function hasLicense(): bool {
return (bool)self::getLicense();
}
} }

View File

@ -12,13 +12,25 @@ use MailPoet\Newsletter\Renderer\Blocks\Social;
use MailPoet\Newsletter\Renderer\Blocks\Spacer; use MailPoet\Newsletter\Renderer\Blocks\Spacer;
use MailPoet\Newsletter\Renderer\Blocks\Text; use MailPoet\Newsletter\Renderer\Blocks\Text;
use MailPoet\Newsletter\Renderer\Columns\Renderer as ColumnRenderer; use MailPoet\Newsletter\Renderer\Columns\Renderer as ColumnRenderer;
use MailPoet\Newsletter\Renderer\Preprocessor;
use MailPoet\Newsletter\Renderer\Renderer; use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Services\Bridge;
use MailPoet\Util\License\License;
use PHPUnit\Framework\MockObject\MockObject;
class RendererTest extends \MailPoetTest { class RendererTest extends \MailPoetTest {
public $dOMParser; public $dOMParser;
public $columnRenderer; public $columnRenderer;
/** @var Renderer & MockObject */
public $renderer; public $renderer;
public $newsletter; public $newsletter;
/** @var License & MockObject */
private $license;
/** @var Bridge & MockObject */
private $bridge;
const COLUMN_BASE_WIDTH = 660; const COLUMN_BASE_WIDTH = 660;
public function _before() { public function _before() {
@ -33,7 +45,16 @@ class RendererTest extends \MailPoetTest {
'type' => 'standard', 'type' => 'standard',
'status' => 'active', 'status' => 'active',
]; ];
$this->renderer = $this->diContainer->get(Renderer::class); $this->license = $this->createMock(License::class);
$this->bridge = $this->createMock(Bridge::class);
$this->renderer = new Renderer(
$this->diContainer->get(\MailPoet\Newsletter\Renderer\Blocks\Renderer::class),
$this->diContainer->get(ColumnRenderer::class),
$this->diContainer->get(Preprocessor::class),
$this->diContainer->get(\MailPoetVendor\CSS::class),
$this->bridge,
$this->license
);
$this->columnRenderer = new ColumnRenderer(); $this->columnRenderer = new ColumnRenderer();
$this->dOMParser = new \pQuery(); $this->dOMParser = new \pQuery();
} }
@ -564,8 +585,8 @@ class RendererTest extends \MailPoetTest {
} }
public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() { public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() {
$this->renderer->mssActivated = false; $this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->renderer->premiumActivated = true; $this->license->method('hasLicense')->willReturn(true);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true); $this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, false); $template = $this->renderer->render($this->newsletter, false);
@ -573,8 +594,8 @@ class RendererTest extends \MailPoetTest {
} }
public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() { public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() {
$this->renderer->premiumActivated = false; $this->license->method('hasLicense')->willReturn(false);
$this->renderer->mssActivated = true; $this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(true);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true); $this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, false); $template = $this->renderer->render($this->newsletter, false);
@ -582,8 +603,8 @@ class RendererTest extends \MailPoetTest {
} }
public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() { public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() {
$this->renderer->mssActivated = false; $this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->renderer->premiumActivated = false; $this->license->method('hasLicense')->willReturn(false);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true); $this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, true); $template = $this->renderer->render($this->newsletter, true);
@ -592,8 +613,8 @@ class RendererTest extends \MailPoetTest {
public function testItAddsMailpoetLogo() { public function testItAddsMailpoetLogo() {
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true); $this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$this->renderer->mssActivated = false; $this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->renderer->premiumActivated = false; $this->license->method('hasLicense')->willReturn(false);
$template = $this->renderer->render($this->newsletter, false); $template = $this->renderer->render($this->newsletter, false);
expect($template['html'])->contains('mailpoet_logo_newsletter.png'); expect($template['html'])->contains('mailpoet_logo_newsletter.png');

View File

@ -8,6 +8,7 @@ use MailPoet\Newsletter\Editor\LayoutHelper as L;
use MailPoet\Newsletter\Renderer\Preprocessor; use MailPoet\Newsletter\Renderer\Preprocessor;
use MailPoet\Newsletter\Renderer\Renderer as NewsletterRenderer; use MailPoet\Newsletter\Renderer\Renderer as NewsletterRenderer;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Util\License\License;
use MailPoetVendor\csstidy; use MailPoetVendor\csstidy;
class RendererTest extends \MailPoetTest { class RendererTest extends \MailPoetTest {
@ -53,7 +54,8 @@ class RendererTest extends \MailPoetTest {
) )
), ),
$this->diContainer->get(\MailPoetVendor\CSS::class), $this->diContainer->get(\MailPoetVendor\CSS::class),
$this->diContainer->get(Bridge::class) $this->diContainer->get(Bridge::class),
$this->diContainer->get(License::class)
); );
$renderer = new Renderer(new csstidy, $newsletterRenderer); $renderer = new Renderer(new csstidy, $newsletterRenderer);
@ -82,7 +84,8 @@ class RendererTest extends \MailPoetTest {
) )
), ),
$this->diContainer->get(\MailPoetVendor\CSS::class), $this->diContainer->get(\MailPoetVendor\CSS::class),
$this->diContainer->get(Bridge::class) $this->diContainer->get(Bridge::class),
$this->diContainer->get(License::class)
); );
$renderer = new Renderer(new csstidy, $newsletterRenderer); $renderer = new Renderer(new csstidy, $newsletterRenderer);
$renderer->render($this->newsletter); $renderer->render($this->newsletter);