Files
piratepoet/mailpoet/lib/EmailEditor/Engine/Renderer/BlocksRenderer.php
Rostislav Wolny 398a313d54 Pass styles controller into block renders
When rendering blocks, we need to access global styles settings.
This will be done via the StylesController

[MAILPOET-5540]
2023-09-21 14:20:35 +02:00

43 lines
1.1 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Engine\Renderer;
use MailPoet\EmailEditor\Engine\StylesController;
class BlocksRenderer {
/** @var BlocksRegistry */
private $blockRenderersRegistry;
/** @var StylesController */
private $stylesController;
/** @var bool */
private $blocksInitialized = false;
public function __construct(
BlocksRegistry $blockRenderersRegistry,
StylesController $stylesController
) {
$this->blockRenderersRegistry = $blockRenderersRegistry;
$this->stylesController = $stylesController;
}
public function render(array $parsedBlocks): string {
if (!$this->blocksInitialized) {
$this->blocksInitialized = true;
do_action('mailpoet_blocks_renderer_initialized', $this->blockRenderersRegistry);
}
$content = '';
foreach ($parsedBlocks as $parsedBlock) {
$blockRenderer = $this->blockRenderersRegistry->getBlockRenderer($parsedBlock['blockName'] ?? '');
if (!$blockRenderer) {
continue;
}
$content .= $blockRenderer->render($parsedBlock, $this, $this->stylesController);
}
return $content;
}
}