'; const WC_HEADING_AFTER = ' '; /** @var BlocksRenderer */ private $blocksRenderer; /** @var TransactionalEmails */ private $transactionalEmails; public function __construct(BlocksRenderer $blocksRenderer, TransactionalEmails $transactionalEmails) { $this->blocksRenderer = $blocksRenderer; $this->transactionalEmails = $transactionalEmails; } /** * @param array $content * @param NewsletterEntity $newsletter * @return array */ public function process(NewsletterEntity $newsletter, $content) { if (!array_key_exists('blocks', $content)) { return $content; } $blocks = []; foreach ($content['blocks'] as $block) { $blocks = array_merge($blocks, $this->processBlock($newsletter, $block)); } $content['blocks'] = $blocks; return $content; } public function processBlock(NewsletterEntity $newsletter, array $block): array { switch ($block['type']) { case 'automatedLatestContentLayout': return $this->blocksRenderer->automatedLatestContentTransformedPosts($newsletter, $block); case 'woocommerceHeading': $wcEmailSettings = $this->transactionalEmails->getWCEmailSettings(); $content = self::WC_HEADING_BEFORE . '

' . self::WC_HEADING_PLACEHOLDER . '

' . self::WC_HEADING_AFTER; return $this->placeholder($content, ['backgroundColor' => $wcEmailSettings['base_color']]); case 'woocommerceContent': return $this->placeholder(self::WC_CONTENT_PLACEHOLDER); } return [$block]; } /** * @param string $text * @return array */ private function placeholder($text, $styles = []) { return [ LayoutHelper::row([ LayoutHelper::col([[ 'type' => 'text', 'text' => $text, ]]), ], $styles), ]; } }