Move data from constructor
[MAILPOET-2899]
This commit is contained in:
@ -570,8 +570,8 @@ class Newsletter extends Model {
|
||||
}
|
||||
|
||||
public function render() {
|
||||
$renderer = new Renderer($this);
|
||||
return $renderer->render();
|
||||
$renderer = new Renderer();
|
||||
return $renderer->render($this);
|
||||
}
|
||||
|
||||
public function wasScheduledForSubscriber($subscriberId) {
|
||||
|
@ -38,8 +38,8 @@ class SendPreviewController {
|
||||
throw new SendPreviewException("Newsletter with ID '{$newsletter->getId()}' not found");
|
||||
}
|
||||
|
||||
$renderer = new Renderer($newsletterModel, $preview = true);
|
||||
$renderedNewsletter = $renderer->render();
|
||||
$renderer = new Renderer();
|
||||
$renderedNewsletter = $renderer->render($newsletterModel, $preview = true);
|
||||
$divider = '***MailPoet***';
|
||||
$dataForShortcodes = array_merge(
|
||||
[$newsletter->getSubject()],
|
||||
|
@ -17,20 +17,13 @@ class Renderer {
|
||||
public $columnsRenderer;
|
||||
public $preprocessor;
|
||||
public $cSSInliner;
|
||||
public $newsletter;
|
||||
public $preview;
|
||||
public $premiumActivated;
|
||||
public $mssActivated;
|
||||
private $template;
|
||||
const NEWSLETTER_TEMPLATE = 'Template.html';
|
||||
const FILTER_POST_PROCESS = 'mailpoet_rendering_post_process';
|
||||
|
||||
/**
|
||||
* @param \MailPoet\Models\Newsletter|array $newsletter
|
||||
*/
|
||||
public function __construct($newsletter, $preview = false) {
|
||||
$this->newsletter = ($newsletter instanceof Newsletter) ? $newsletter->asArray() : $newsletter;
|
||||
$this->preview = $preview;
|
||||
public function __construct() {
|
||||
$this->blocksRenderer = ContainerWrapper::getInstance()->get(Blocks\Renderer::class);
|
||||
$this->columnsRenderer = new Columns\Renderer();
|
||||
$this->preprocessor = new Preprocessor(
|
||||
@ -44,8 +37,11 @@ class Renderer {
|
||||
$this->mssActivated = $bridge->isMPSendingServiceEnabled();
|
||||
}
|
||||
|
||||
public function render($type = false) {
|
||||
$newsletter = $this->newsletter;
|
||||
/**
|
||||
* @param \MailPoet\Models\Newsletter|array $newsletter
|
||||
*/
|
||||
public function render($newsletter, $preview = false, $type = false) {
|
||||
$newsletter = ($newsletter instanceof Newsletter) ? $newsletter->asArray() : $newsletter;
|
||||
$body = (is_array($newsletter['body']))
|
||||
? $newsletter['body']
|
||||
: [];
|
||||
@ -56,12 +52,12 @@ class Renderer {
|
||||
? $body['globalStyles']
|
||||
: [];
|
||||
|
||||
if (!$this->premiumActivated && !$this->mssActivated && !$this->preview) {
|
||||
if (!$this->premiumActivated && !$this->mssActivated && !$preview) {
|
||||
$content = $this->addMailpoetLogoContentBlock($content, $styles);
|
||||
}
|
||||
|
||||
$content = $this->preprocessor->process($newsletter, $content);
|
||||
$renderedBody = $this->renderBody($content);
|
||||
$renderedBody = $this->renderBody($newsletter, $content);
|
||||
$renderedStyles = $this->renderStyles($styles);
|
||||
$customFontsLinks = StylesHelper::getCustomFontsLinks($styles);
|
||||
|
||||
@ -89,18 +85,19 @@ class Renderer {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $newsletter
|
||||
* @param array $content
|
||||
* @return string
|
||||
*/
|
||||
private function renderBody($content) {
|
||||
private function renderBody($newsletter, $content) {
|
||||
$blocks = (array_key_exists('blocks', $content))
|
||||
? $content['blocks']
|
||||
: [];
|
||||
|
||||
$_this = $this;
|
||||
$renderedContent = array_map(function($contentBlock) use($_this) {
|
||||
$renderedContent = array_map(function($contentBlock) use($_this, $newsletter) {
|
||||
|
||||
$columnsData = $_this->blocksRenderer->render($_this->newsletter, $contentBlock);
|
||||
$columnsData = $_this->blocksRenderer->render($newsletter, $contentBlock);
|
||||
|
||||
return $_this->columnsRenderer->render(
|
||||
$contentBlock,
|
||||
|
@ -47,8 +47,8 @@ class ViewInBrowserRenderer {
|
||||
$newsletterBody = str_replace(Links::DATA_TAG_OPEN, '', $newsletterBody);
|
||||
}
|
||||
} else {
|
||||
$renderer = new Renderer($newsletter, $wpUserPreview);
|
||||
$newsletterBody = $renderer->render('html');
|
||||
$renderer = new Renderer();
|
||||
$newsletterBody = $renderer->render($newsletter, $wpUserPreview, 'html');
|
||||
}
|
||||
$shortcodes = new Shortcodes(
|
||||
$newsletter,
|
||||
|
@ -27,8 +27,8 @@ class Renderer {
|
||||
}
|
||||
|
||||
public function render(Newsletter $newsletter, NewsletterRenderer $renderer = null) {
|
||||
$renderer = $renderer ?: new NewsletterRenderer($newsletter, true);
|
||||
$html = explode(Preprocessor::WC_CONTENT_PLACEHOLDER, $renderer->render('html'));
|
||||
$renderer = $renderer ?: new NewsletterRenderer();
|
||||
$html = explode(Preprocessor::WC_CONTENT_PLACEHOLDER, $renderer->render($newsletter, true, 'html'));
|
||||
$this->htmlBeforeContent = $html[0];
|
||||
$this->htmlAfterContent = $html[1];
|
||||
}
|
||||
|
@ -33,14 +33,13 @@ class RendererTest extends \MailPoetTest {
|
||||
'type' => 'standard',
|
||||
'status' => 'active',
|
||||
];
|
||||
$this->renderer = new Renderer($this->newsletter);
|
||||
$this->renderer = new Renderer();
|
||||
$this->columnRenderer = new ColumnRenderer();
|
||||
$this->dOMParser = new \pQuery();
|
||||
}
|
||||
|
||||
public function testItRendersCompleteNewsletter() {
|
||||
$this->renderer->preview = true; // do not render logo
|
||||
$template = $this->renderer->render();
|
||||
$template = $this->renderer->render($this->newsletter, true);// do not render logo
|
||||
expect(isset($template['html']))->true();
|
||||
expect(isset($template['text']))->true();
|
||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||
@ -549,48 +548,45 @@ class RendererTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItSetsSubject() {
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter);
|
||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||
$subject = trim($DOM('title')->text());
|
||||
expect($subject)->equals($this->newsletter['subject']);
|
||||
}
|
||||
|
||||
public function testItSetsPreheader() {
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter);
|
||||
$DOM = $this->dOMParser->parseStr($template['html']);
|
||||
$preheader = trim($DOM('td.mailpoet_preheader')->text());
|
||||
expect($preheader)->equals($this->newsletter['preheader']);
|
||||
}
|
||||
|
||||
public function testItDoesNotAddMailpoetLogoWhenPremiumIsActive() {
|
||||
$this->renderer->preview = false;
|
||||
$this->renderer->mssActivated = false;
|
||||
$this->renderer->premiumActivated = true;
|
||||
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter, false);
|
||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||
}
|
||||
|
||||
public function testItDoesNotAddMailpoetLogoWhenMSSIsActive() {
|
||||
$this->renderer->preview = false;
|
||||
$this->renderer->premiumActivated = false;
|
||||
$this->renderer->mssActivated = true;
|
||||
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter, false);
|
||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||
}
|
||||
|
||||
public function testItDoesNotAddMailpoetLogoWhenPreviewIsEnabled() {
|
||||
$this->renderer->mssActivated = false;
|
||||
$this->renderer->premiumActivated = false;
|
||||
$this->renderer->preview = true;
|
||||
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter, true);
|
||||
expect($template['html'])->notContains('mailpoet_logo_newsletter.png');
|
||||
}
|
||||
|
||||
@ -598,15 +594,14 @@ class RendererTest extends \MailPoetTest {
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$this->renderer->mssActivated = false;
|
||||
$this->renderer->premiumActivated = false;
|
||||
$this->renderer->preview = false;
|
||||
|
||||
$template = $this->renderer->render();
|
||||
$template = $this->renderer->render($this->newsletter, false);
|
||||
expect($template['html'])->contains('mailpoet_logo_newsletter.png');
|
||||
}
|
||||
|
||||
public function testItPostProcessesTemplate() {
|
||||
$this->renderer->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render();
|
||||
$this->newsletter['body'] = json_decode(Fixtures::get('newsletter_body_template'), true);
|
||||
$template = $this->renderer->render($this->newsletter);
|
||||
// !important should be stripped from everywhere except from with the <style> tag
|
||||
expect(preg_match('/<style.*?important/s', $template['html']))->equals(1);
|
||||
expect(preg_match('/mailpoet_template.*?important/s', $template['html']))->equals(0);
|
||||
|
@ -37,7 +37,7 @@ class RendererTest extends \MailPoetTest {
|
||||
|
||||
public function testGetHTMLBeforeContent() {
|
||||
$renderer = new Renderer(new csstidy);
|
||||
$newsletterRenderer = new NewsletterRenderer($this->newsletter, true);
|
||||
$newsletterRenderer = new NewsletterRenderer();
|
||||
$newsletterRenderer->preprocessor = new Preprocessor(
|
||||
$newsletterRenderer->blocksRenderer,
|
||||
Stub::make(
|
||||
@ -60,7 +60,7 @@ class RendererTest extends \MailPoetTest {
|
||||
|
||||
public function testGetHTMLAfterContent() {
|
||||
$renderer = new Renderer(new csstidy);
|
||||
$newsletterRenderer = new NewsletterRenderer($this->newsletter, true);
|
||||
$newsletterRenderer = new NewsletterRenderer();
|
||||
$newsletterRenderer->preprocessor = new Preprocessor(
|
||||
$newsletterRenderer->blocksRenderer,
|
||||
Stub::make(
|
||||
|
Reference in New Issue
Block a user