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\Installation::class);
$container->autowire(\MailPoet\Util\License\Features\Subscribers::class);
$container->autowire(\MailPoet\Util\License\License::class);
// WooCommerce
$container->autowire(\MailPoet\WooCommerce\Helper::class)->setPublic(true);
$container->autowire(\MailPoet\WooCommerce\Settings::class)->setPublic(true);

View File

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

View File

@ -13,4 +13,8 @@ class 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\Text;
use MailPoet\Newsletter\Renderer\Columns\Renderer as ColumnRenderer;
use MailPoet\Newsletter\Renderer\Preprocessor;
use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Services\Bridge;
use MailPoet\Util\License\License;
use PHPUnit\Framework\MockObject\MockObject;
class RendererTest extends \MailPoetTest {
public $dOMParser;
public $columnRenderer;
/** @var Renderer & MockObject */
public $renderer;
public $newsletter;
/** @var License & MockObject */
private $license;
/** @var Bridge & MockObject */
private $bridge;
const COLUMN_BASE_WIDTH = 660;
public function _before() {
@ -33,7 +45,16 @@ class RendererTest extends \MailPoetTest {
'type' => 'standard',
'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->dOMParser = new \pQuery();
}
@ -564,8 +585,8 @@ class RendererTest extends \MailPoetTest {
}
public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() {
$this->renderer->mssActivated = false;
$this->renderer->premiumActivated = true;
$this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->license->method('hasLicense')->willReturn(true);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, false);
@ -573,8 +594,8 @@ class RendererTest extends \MailPoetTest {
}
public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() {
$this->renderer->premiumActivated = false;
$this->renderer->mssActivated = true;
$this->license->method('hasLicense')->willReturn(false);
$this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(true);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, false);
@ -582,8 +603,8 @@ class RendererTest extends \MailPoetTest {
}
public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() {
$this->renderer->mssActivated = false;
$this->renderer->premiumActivated = false;
$this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->license->method('hasLicense')->willReturn(false);
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$template = $this->renderer->render($this->newsletter, true);
@ -592,8 +613,8 @@ class RendererTest extends \MailPoetTest {
public function testItAddsMailpoetLogo() {
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
$this->renderer->mssActivated = false;
$this->renderer->premiumActivated = false;
$this->bridge->method('isMailpoetSendingServiceEnabled')->willReturn(false);
$this->license->method('hasLicense')->willReturn(false);
$template = $this->renderer->render($this->newsletter, false);
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\Renderer as NewsletterRenderer;
use MailPoet\Services\Bridge;
use MailPoet\Util\License\License;
use MailPoetVendor\csstidy;
class RendererTest extends \MailPoetTest {
@ -53,7 +54,8 @@ class RendererTest extends \MailPoetTest {
)
),
$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);
@ -82,7 +84,8 @@ class RendererTest extends \MailPoetTest {
)
),
$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->render($this->newsletter);