diff --git a/lib/Newsletter/Renderer/Blocks/Renderer.php b/lib/Newsletter/Renderer/Blocks/Renderer.php index a9a08afaa9..ec01851c33 100644 --- a/lib/Newsletter/Renderer/Blocks/Renderer.php +++ b/lib/Newsletter/Renderer/Blocks/Renderer.php @@ -2,7 +2,6 @@ namespace MailPoet\Newsletter\Renderer\Blocks; -use MailPoet\DI\ContainerWrapper; use MailPoet\Models\Newsletter; use MailPoet\Models\NewsletterPost; use MailPoet\Newsletter\AutomatedLatestContent; @@ -10,37 +9,35 @@ use MailPoet\Newsletter\Renderer\Columns\ColumnsHelper; use MailPoet\Newsletter\Renderer\StylesHelper; class Renderer { - public $newsletter; public $posts; public $ALC; - public function __construct(array $newsletter) { - $this->newsletter = $newsletter; + public function __construct(AutomatedLatestContent $ALC) { $this->posts = []; - $this->ALC = ContainerWrapper::getInstance()->get(AutomatedLatestContent::class); + $this->ALC = $ALC; } - public function render($data) { + public function render($newsletter, $data) { $columnCount = count($data['blocks']); $columnsLayout = isset($data['columnLayout']) ? $data['columnLayout'] : null; $columnWidths = ColumnsHelper::columnWidth($columnCount, $columnsLayout); $columnContent = []; foreach ($data['blocks'] as $index => $columnBlocks) { - $renderedBlockElement = $this->renderBlocksInColumn($columnBlocks, $columnWidths[$index]); + $renderedBlockElement = $this->renderBlocksInColumn($newsletter, $columnBlocks, $columnWidths[$index]); $columnContent[] = $renderedBlockElement; } return $columnContent; } - private function renderBlocksInColumn($block, $columnBaseWidth) { + private function renderBlocksInColumn($newsletter, $block, $columnBaseWidth) { $blockContent = ''; $_this = $this; - array_map(function($block) use (&$blockContent, $columnBaseWidth, $_this) { - $renderedBlockElement = $_this->createElementFromBlockType($block, $columnBaseWidth); + array_map(function($block) use (&$blockContent, $columnBaseWidth, $newsletter, $_this) { + $renderedBlockElement = $_this->createElementFromBlockType($newsletter, $block, $columnBaseWidth); if (isset($block['blocks'])) { - $renderedBlockElement = $_this->renderBlocksInColumn($block, $columnBaseWidth); + $renderedBlockElement = $_this->renderBlocksInColumn($newsletter, $block, $columnBaseWidth); // nested vertical column container is rendered as an array if (is_array($renderedBlockElement)) { $renderedBlockElement = implode('', $renderedBlockElement); @@ -52,9 +49,9 @@ class Renderer { return $blockContent; } - public function createElementFromBlockType($block, $columnBaseWidth) { + public function createElementFromBlockType($newsletter, $block, $columnBaseWidth) { if ($block['type'] === 'automatedLatestContent') { - $content = $this->processAutomatedLatestContent($block, $columnBaseWidth); + $content = $this->processAutomatedLatestContent($newsletter, $block, $columnBaseWidth); return $content; } $block = StylesHelper::applyTextAlignment($block); @@ -65,11 +62,11 @@ class Renderer { return $blockClass::render($block, $columnBaseWidth); } - public function automatedLatestContentTransformedPosts($args) { + public function automatedLatestContentTransformedPosts($newsletter, $args) { $newerThanTimestamp = false; $newsletterId = false; - if ($this->newsletter['type'] === Newsletter::TYPE_NOTIFICATION_HISTORY) { - $newsletterId = $this->newsletter['parent_id']; + if ($newsletter['type'] === Newsletter::TYPE_NOTIFICATION_HISTORY) { + $newsletterId = $newsletter['parent_id']; $lastPost = NewsletterPost::getNewestNewsletterPost($newsletterId); if ($lastPost) { @@ -85,13 +82,12 @@ class Renderer { return $this->ALC->transformPosts($args, $aLCPosts); } - public function processAutomatedLatestContent($args, $columnBaseWidth) { + public function processAutomatedLatestContent($newsletter, $args, $columnBaseWidth) { $transformedPosts = [ - 'blocks' => $this->automatedLatestContentTransformedPosts($args), + 'blocks' => $this->automatedLatestContentTransformedPosts($newsletter, $args), ]; $transformedPosts = StylesHelper::applyTextAlignment($transformedPosts); - $renderedPosts = $this->renderBlocksInColumn($transformedPosts, $columnBaseWidth); - return $renderedPosts; + return $this->renderBlocksInColumn($newsletter, $transformedPosts, $columnBaseWidth); } public function getPosts() { diff --git a/lib/Newsletter/Renderer/Preprocessor.php b/lib/Newsletter/Renderer/Preprocessor.php index cc954188af..f90e548395 100644 --- a/lib/Newsletter/Renderer/Preprocessor.php +++ b/lib/Newsletter/Renderer/Preprocessor.php @@ -32,15 +32,16 @@ class Preprocessor { /** * @param array $content + * @param array $newsletter * @return array */ - public function process($content) { + public function process($newsletter, $content) { if (!array_key_exists('blocks', $content)) { return $content; } $blocks = []; foreach ($content['blocks'] as $block) { - $blocks = array_merge($blocks, $this->processBlock($block)); + $blocks = array_merge($blocks, $this->processBlock($newsletter, $block)); } $content['blocks'] = $blocks; return $content; @@ -48,12 +49,13 @@ class Preprocessor { /** * @param array $block + * @param array $newsletter * @return array */ - public function processBlock($block) { + public function processBlock($newsletter, $block) { switch ($block['type']) { case 'automatedLatestContentLayout': - return $this->blocksRenderer->automatedLatestContentTransformedPosts($block); + return $this->blocksRenderer->automatedLatestContentTransformedPosts($newsletter, $block); case 'woocommerceHeading': $wcEmailSettings = $this->transactionalEmails->getWCEmailSettings(); $content = self::WC_HEADING_BEFORE . '