Rename files in email editor package by WP Coding Standard

[MAILPOET-6240]
This commit is contained in:
Jan Lysý
2024-11-07 11:45:02 +01:00
committed by Jan Lysý
parent 46fb372008
commit b6103b4581
90 changed files with 473 additions and 472 deletions

View File

@ -42,7 +42,8 @@
"autoload": { "autoload": {
"classmap": [ "classmap": [
"lib-3rd-party", "lib-3rd-party",
"vendor-prefixed" "vendor-prefixed",
"vendor/mailpoet/email-editor/src"
], ],
"files": [ "files": [
"lib/exceptions.php", "lib/exceptions.php",

View File

@ -6,8 +6,8 @@ use MailPoet\API\JSON\API;
use MailPoet\Config\Env; use MailPoet\Config\Env;
use MailPoet\Config\Installer; use MailPoet\Config\Installer;
use MailPoet\Config\ServicesChecker; use MailPoet\Config\ServicesChecker;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as EditorInitController; use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as EditorInitController;
use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Settings\SettingsController as MailPoetSettings; use MailPoet\Settings\SettingsController as MailPoetSettings;
@ -18,9 +18,9 @@ use MailPoet\WP\Functions as WPFunctions;
class EmailEditor { class EmailEditor {
private WPFunctions $wp; private WPFunctions $wp;
private SettingsController $settingsController; private Settings_Controller $settingsController;
private ThemeController $themeController; private Theme_Controller $themeController;
private CdnAssetUrl $cdnAssetUrl; private CdnAssetUrl $cdnAssetUrl;
@ -34,11 +34,11 @@ class EmailEditor {
public function __construct( public function __construct(
WPFunctions $wp, WPFunctions $wp,
SettingsController $settingsController, Settings_Controller $settingsController,
CdnAssetUrl $cdnAssetUrl, CdnAssetUrl $cdnAssetUrl,
ServicesChecker $servicesChecker, ServicesChecker $servicesChecker,
SubscribersFeature $subscribersFeature, SubscribersFeature $subscribersFeature,
ThemeController $themeController, Theme_Controller $themeController,
MailPoetSettings $mailpoetSettings, MailPoetSettings $mailpoetSettings,
NewslettersRepository $newslettersRepository NewslettersRepository $newslettersRepository
) { ) {

View File

@ -11,7 +11,7 @@ use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration;
use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration; use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration;
use MailPoet\Cron\CronTrigger; use MailPoet\Cron\CronTrigger;
use MailPoet\Cron\DaemonActionSchedulerRunner; use MailPoet\Cron\DaemonActionSchedulerRunner;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Integrations\Core\Initializer as CoreEmailEditorIntegration; use MailPoet\EmailEditor\Integrations\Core\Initializer as CoreEmailEditorIntegration;
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController; use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as MailpoetEmailEditorIntegration; use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as MailpoetEmailEditorIntegration;
@ -120,7 +120,7 @@ class Initializer {
/** @var DaemonActionSchedulerRunner */ /** @var DaemonActionSchedulerRunner */
private $actionSchedulerRunner; private $actionSchedulerRunner;
/** @var EmailEditor */ /** @var Email_Editor */
private $emailEditor; private $emailEditor;
/** @var MailpoetEmailEditorIntegration */ /** @var MailpoetEmailEditorIntegration */
@ -171,7 +171,7 @@ class Initializer {
WooCommerceIntegration $woocommerceIntegration, WooCommerceIntegration $woocommerceIntegration,
PersonalDataExporters $personalDataExporters, PersonalDataExporters $personalDataExporters,
DaemonActionSchedulerRunner $actionSchedulerRunner, DaemonActionSchedulerRunner $actionSchedulerRunner,
EmailEditor $emailEditor, Email_Editor $emailEditor,
BlockTypesController $blockTypesController, BlockTypesController $blockTypesController,
MailpoetEmailEditorIntegration $mailpoetEmailEditorIntegration, MailpoetEmailEditorIntegration $mailpoetEmailEditorIntegration,
CoreEmailEditorIntegration $coreEmailEditorIntegration, CoreEmailEditorIntegration $coreEmailEditorIntegration,

View File

@ -337,27 +337,27 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class); $container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true); $container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);
// Email Editor // Email Editor
$container->autowire(\MailPoet\EmailEditor\Utils\CdnAssetUrl::class) $container->autowire(\MailPoet\EmailEditor\Utils\Cdn_Asset_Url::class)
->setPublic(true) ->setPublic(true)
->setFactory([__CLASS__, 'getEmailEditorCdnAssetsUrl']); ->setFactory([__CLASS__, 'getEmailEditorCdnAssetsUrl']);
$container->autowire(\MailPoet\EmailEditor\Engine\EmailEditor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Email_Editor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\EmailApiController::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Email_Api_Controller::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\SettingsController::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Settings_Controller::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\ThemeController::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Theme_Controller::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\Renderer::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\Renderer::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\Templates::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Templates\Templates::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\Utils::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Templates\Utils::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Templates\TemplatePreview::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Templates\Template_Preview::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Patterns\Patterns::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Patterns\Patterns::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\Core\Initializer::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\Core\Initializer::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Cli::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\Cli::class)->setPublic(true);
$container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor::class)->setPublic(true); $container->autowire(\MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor::class)->setPublic(true);
@ -689,7 +689,7 @@ class ContainerConfigurator implements IContainerConfigurator {
return new \MailPoet\Util\CdnAssetUrl((string)Env::$baseUrl); return new \MailPoet\Util\CdnAssetUrl((string)Env::$baseUrl);
} }
public static function getEmailEditorCdnAssetsUrl(): \MailPoet\EmailEditor\Utils\CdnAssetUrl { public static function getEmailEditorCdnAssetsUrl(): \MailPoet\EmailEditor\Utils\Cdn_Asset_Url {
return new \MailPoet\EmailEditor\Utils\CdnAssetUrl((string)Env::$baseUrl); return new \MailPoet\EmailEditor\Utils\Cdn_Asset_Url((string)Env::$baseUrl);
} }
} }

View File

@ -21,7 +21,7 @@ class EmailEditorTest extends \MailPoetTest {
public function testItRegistersMailPoetEmailPostType() { public function testItRegistersMailPoetEmailPostType() {
$this->emailEditor->initialize(); $this->emailEditor->initialize();
$this->diContainer->get(\MailPoet\EmailEditor\Engine\EmailEditor::class)->initialize(); $this->diContainer->get(\MailPoet\EmailEditor\Engine\Email_Editor::class)->initialize();
$postTypes = get_post_types(); $postTypes = get_post_types();
$this->assertArrayHasKey('mailpoet_email', $postTypes); $this->assertArrayHasKey('mailpoet_email', $postTypes);
} }

View File

@ -3,14 +3,14 @@
"description": "Email editor based on WordPress Gutenberg package.", "description": "Email editor based on WordPress Gutenberg package.",
"type": "library", "type": "library",
"autoload": { "autoload": {
"psr-4": { "classmap": [
"MailPoet\\EmailEditor\\": "src/" "src/"
} ]
}, },
"autoload-dev": { "autoload-dev": {
"psr-4": { "classmap": [
"MailPoet\\EmailEditor\\": "tests/unit/" "tests/unit/"
} ]
}, },
"require": { "require": {
"php": ">=7.4" "php": ">=7.4"
@ -28,6 +28,7 @@
}, },
"scripts": { "scripts": {
"unit-test": "vendor/bin/codecept run unit", "unit-test": "vendor/bin/codecept run unit",
"integration-test": "cd ../../../tests_env/docker && COMPOSE_HTTP_TIMEOUT=200 docker compose run -e SKIP_DEPS=1 -e SKIP_PLUGINS=1 -e PACKAGE_NAME=email-editor codeception_integration" "integration-test": "cd ../../../tests_env/docker && COMPOSE_HTTP_TIMEOUT=200 docker compose run -e SKIP_DEPS=1 -e SKIP_PLUGINS=1 -e PACKAGE_NAME=email-editor codeception_integration",
"code-style": "../../../mailpoet/tasks/code_sniffer/vendor/bin/phpcs -ps --standard=WordPress src/"
} }
} }

View File

@ -2,9 +2,9 @@
namespace MailPoet\EmailEditor\Engine\Patterns\Library; namespace MailPoet\EmailEditor\Engine\Patterns\Library;
use MailPoet\EmailEditor\Utils\CdnAssetUrl; use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
abstract class AbstractPattern { abstract class Abstract_Pattern {
protected $cdnAssetUrl; protected $cdnAssetUrl;
protected $blockTypes = []; protected $blockTypes = [];
protected $templateTypes = []; protected $templateTypes = [];
@ -14,7 +14,7 @@ abstract class AbstractPattern {
protected $viewportWidth = 620; protected $viewportWidth = 620;
public function __construct( public function __construct(
CdnAssetUrl $cdnAssetUrl Cdn_Asset_Url $cdnAssetUrl
) { ) {
$this->cdnAssetUrl = $cdnAssetUrl; $this->cdnAssetUrl = $cdnAssetUrl;
} }

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine\Patterns\Library; namespace MailPoet\EmailEditor\Engine\Patterns\Library;
class DefaultContentFull extends AbstractPattern { class Default_Content_Full extends Abstract_Pattern {
protected $blockTypes = [ protected $blockTypes = [
'core/post-content', 'core/post-content',
]; ];

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine\Patterns\Library; namespace MailPoet\EmailEditor\Engine\Patterns\Library;
class DefaultContent extends AbstractPattern { class Default_Content extends Abstract_Pattern {
protected $blockTypes = [ protected $blockTypes = [
'core/post-content', 'core/post-content',
]; ];
@ -11,7 +11,7 @@ class DefaultContent extends AbstractPattern {
'email-template', 'email-template',
]; ];
protected function getContent(): string { protected function getContent(): string
return ' return '
<!-- wp:columns {"backgroundColor":"white","style":{"spacing":{"padding":{"top":"var:preset|spacing|20","bottom":"var:preset|spacing|20","left":"var:preset|spacing|20","right":"var:preset|spacing|20"}}}} --> <!-- wp:columns {"backgroundColor":"white","style":{"spacing":{"padding":{"top":"var:preset|spacing|20","bottom":"var:preset|spacing|20","left":"var:preset|spacing|20","right":"var:preset|spacing|20"}}}} -->
<div class="wp-block-columns has-white-background-color has-background" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><!-- wp:column --> <div class="wp-block-columns has-white-background-color has-background" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><!-- wp:column -->

View File

@ -2,14 +2,14 @@
namespace MailPoet\EmailEditor\Engine\Patterns; namespace MailPoet\EmailEditor\Engine\Patterns;
use MailPoet\EmailEditor\Utils\CdnAssetUrl; use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
class Patterns { class Patterns {
private $namespace = 'mailpoet'; private $namespace = 'mailpoet';
protected $cdnAssetUrl; protected $cdnAssetUrl;
public function __construct( public function __construct(
CdnAssetUrl $cdnAssetUrl Cdn_Asset_Url $cdnAssetUrl
) { ) {
$this->cdnAssetUrl = $cdnAssetUrl; $this->cdnAssetUrl = $cdnAssetUrl;
} }
@ -30,8 +30,8 @@ class Patterns {
} }
private function registerPatterns() { private function registerPatterns() {
$this->registerPattern('default', new Library\DefaultContent($this->cdnAssetUrl)); $this->registerPattern('default', new Library\Default_Content($this->cdnAssetUrl));
$this->registerPattern('default-full', new Library\DefaultContentFull($this->cdnAssetUrl)); $this->registerPattern('default-full', new Library\Default_Content_Full($this->cdnAssetUrl));
} }
private function registerPattern($name, $pattern) { private function registerPattern($name, $pattern) {

View File

@ -2,13 +2,13 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
/** /**
* This class provides functionality to render inner blocks of a block that supports reduced flex layout. * This class provides functionality to render inner blocks of a block that supports reduced flex layout.
*/ */
class FlexLayoutRenderer { class Flex_Layout_Renderer {
public function renderInnerBlocksInLayout(array $parsedBlock, SettingsController $settingsController): string { public function renderInnerBlocksInLayout(array $parsedBlock, Settings_Controller $settingsController): string {
$themeStyles = $settingsController->getEmailStyles(); $themeStyles = $settingsController->getEmailStyles();
$flexGap = $themeStyles['spacing']['blockGap'] ?? '0px'; $flexGap = $themeStyles['spacing']['blockGap'] ?? '0px';
$flexGapNumber = $settingsController->parseNumberFromStringWithPixels($flexGap); $flexGapNumber = $settingsController->parseNumberFromStringWithPixels($flexGap);
@ -45,7 +45,7 @@ class FlexLayoutRenderer {
return $outputHtml; return $outputHtml;
} }
private function computeWidthsForFlexLayout(array $parsedBlock, SettingsController $settingsController, float $flexGap): array { private function computeWidthsForFlexLayout(array $parsedBlock, Settings_Controller $settingsController, float $flexGap): array {
// When there is no parent width we can't compute widths so auto width will be used // When there is no parent width we can't compute widths so auto width will be used
if (!isset($parsedBlock['email_attrs']['width'])) { if (!isset($parsedBlock['email_attrs']['width'])) {
return $parsedBlock['innerBlocks'] ?? []; return $parsedBlock['innerBlocks'] ?? [];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors;
/** /**
* This postprocessor replaces <mark> tags with <span> tags because mark tags are not supported across all email clients * This postprocessor replaces <mark> tags with <span> tags because mark tags are not supported across all email clients
*/ */
class HighlightingPostprocessor implements Postprocessor { class Highlighting_Postprocessor implements Postprocessor {
public function postprocess(string $html): string { public function postprocess(string $html): string {
return str_replace( return str_replace(
['<mark', '</mark>'], ['<mark', '</mark>'],

View File

@ -2,18 +2,18 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
/** /**
* In some case the blocks HTML contains CSS variables. * In some case the blocks HTML contains CSS variables.
* For example when spacing is set from a preset the inline styles contain var(--wp--preset--spacing--10), var(--wp--preset--spacing--20) etc. * For example when spacing is set from a preset the inline styles contain var(--wp--preset--spacing--10), var(--wp--preset--spacing--20) etc.
* This postprocessor uses variables from theme.json and replaces the CSS variables with their values in final email HTML. * This postprocessor uses variables from theme.json and replaces the CSS variables with their values in final email HTML.
*/ */
class VariablesPostprocessor implements Postprocessor { class Variables_Postprocessor implements Postprocessor {
private ThemeController $themeController; private Theme_Controller $themeController;
public function __construct( public function __construct(
ThemeController $themeController Theme_Controller $themeController
) { ) {
$this->themeController = $themeController; $this->themeController = $themeController;
} }

View File

@ -6,7 +6,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
* This class sets the width of the blocks based on the layout width or column count. * This class sets the width of the blocks based on the layout width or column count.
* The final width in pixels is stored in the email_attrs array because we would like to avoid changing the original attributes. * The final width in pixels is stored in the email_attrs array because we would like to avoid changing the original attributes.
*/ */
class BlocksWidthPreprocessor implements Preprocessor { class Blocks_Width_Preprocessor implements Preprocessor {
public function preprocess(array $parsedBlocks, array $layout, array $styles): array { public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
foreach ($parsedBlocks as $key => $block) { foreach ($parsedBlocks as $key => $block) {
// Layout width is recalculated for each block because full-width blocks don't exclude padding // Layout width is recalculated for each block because full-width blocks don't exclude padding

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
class CleanupPreprocessor implements Preprocessor { class Cleanup_Preprocessor implements Preprocessor {
public function preprocess(array $parsedBlocks, array $layout, array $styles): array { public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
foreach ($parsedBlocks as $key => $block) { foreach ($parsedBlocks as $key => $block) {
// https://core.trac.wordpress.org/ticket/45312 // https://core.trac.wordpress.org/ticket/45312

View File

@ -6,7 +6,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
* This preprocessor is responsible for setting default spacing values for blocks. * This preprocessor is responsible for setting default spacing values for blocks.
* In the early development phase, we are setting only margin-top for blocks that are not first or last in the columns block. * In the early development phase, we are setting only margin-top for blocks that are not first or last in the columns block.
*/ */
class SpacingPreprocessor implements Preprocessor { class Spacing_Preprocessor implements Preprocessor {
public function preprocess(array $parsedBlocks, array $layout, array $styles): array { public function preprocess(array $parsedBlocks, array $layout, array $styles): array {
$parsedBlocks = $this->addBlockGaps($parsedBlocks, $styles['spacing']['blockGap'] ?? '', null); $parsedBlocks = $this->addBlockGaps($parsedBlocks, $styles['spacing']['blockGap'] ?? '', null);
return $parsedBlocks; return $parsedBlocks;

View File

@ -2,9 +2,9 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class TypographyPreprocessor implements Preprocessor { class Typography_Preprocessor implements Preprocessor {
/** /**
* List of styles that should be copied from parent to children. * List of styles that should be copied from parent to children.
* @var string[] * @var string[]
@ -15,11 +15,11 @@ class TypographyPreprocessor implements Preprocessor {
'text-decoration', 'text-decoration',
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function __construct( public function __construct(
SettingsController $settingsController Settings_Controller $settingsController
) { ) {
$this->settingsController = $settingsController; $this->settingsController = $settingsController;
} }

View File

@ -2,8 +2,8 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
interface BlockRenderer { interface Block_Renderer {
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string; public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string;
} }

View File

@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use WP_Block_Parser; use WP_Block_Parser;
class BlocksParser extends WP_Block_Parser { class Blocks_Parser extends WP_Block_Parser {
/** /**
* List of parsed blocks * List of parsed blocks
* *

View File

@ -2,14 +2,14 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
class BlocksRegistry { class Blocks_Registry {
/** @var BlockRenderer[] */ /** @var Block_Renderer[] */
private $blockRenderersMap = []; private $blockRenderersMap = [];
/** @var BlockRenderer */ /** @var BlockRenderer */
private $fallbackRenderer = null; private $fallbackRenderer = null;
public function addBlockRenderer(string $blockName, BlockRenderer $renderer): void { public function addBlockRenderer(string $blockName, Block_Renderer $renderer): void {
$this->blockRenderersMap[$blockName] = $renderer; $this->blockRenderersMap[$blockName] = $renderer;
} }
@ -21,7 +21,7 @@ class BlocksRegistry {
return isset($this->blockRenderersMap[$blockName]); return isset($this->blockRenderersMap[$blockName]);
} }
public function getBlockRenderer(string $blockName): ?BlockRenderer { public function getBlockRenderer(string $blockName): ?Block_Renderer {
return $this->blockRenderersMap[$blockName] ?? null; return $this->blockRenderersMap[$blockName] ?? null;
} }

View File

@ -2,27 +2,27 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use MailPoetVendor\Pelago\Emogrifier\CssInliner; use MailPoetVendor\Pelago\Emogrifier\CssInliner;
use WP_Block_Template; use WP_Block_Template;
use WP_Post; use WP_Post;
class ContentRenderer { class Content_Renderer {
private BlocksRegistry $blocksRegistry; private Blocks_Registry $blocksRegistry;
private ProcessManager $processManager; private Process_Manager $processManager;
private SettingsController $settingsController; private Settings_Controller $settingsController;
private ThemeController $themeController; private Theme_Controller $themeController;
private $post = null; private $post = null;
private $template = null; private $template = null;
const CONTENT_STYLES_FILE = 'content.css'; const CONTENT_STYLES_FILE = 'content.css';
public function __construct( public function __construct(
ProcessManager $preprocessManager, Process_Manager $preprocessManager,
BlocksRegistry $blocksRegistry, Blocks_Registry $blocksRegistry,
SettingsController $settingsController, Settings_Controller $settingsController,
ThemeController $themeController Theme_Controller $themeController
) { ) {
$this->processManager = $preprocessManager; $this->processManager = $preprocessManager;
$this->blocksRegistry = $blocksRegistry; $this->blocksRegistry = $blocksRegistry;
@ -50,7 +50,7 @@ class ContentRenderer {
} }
public function blockParser() { public function blockParser() {
return 'MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksParser'; return 'MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Parser';
} }
public function preprocessParsedBlocks(array $parsedBlocks): array { public function preprocessParsedBlocks(array $parsedBlocks): array {

View File

@ -2,16 +2,16 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Postprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Preprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
class ProcessManager { class Process_Manager {
/** @var Preprocessor[] */ /** @var Preprocessor[] */
private $preprocessors = []; private $preprocessors = [];
@ -19,12 +19,12 @@ class ProcessManager {
private $postprocessors = []; private $postprocessors = [];
public function __construct( public function __construct(
CleanupPreprocessor $cleanupPreprocessor, Cleanup_Preprocessor $cleanupPreprocessor,
BlocksWidthPreprocessor $blocksWidthPreprocessor, Blocks_Width_Preprocessor $blocksWidthPreprocessor,
TypographyPreprocessor $typographyPreprocessor, Typography_Preprocessor $typographyPreprocessor,
SpacingPreprocessor $spacingPreprocessor, Spacing_Preprocessor $spacingPreprocessor,
HighlightingPostprocessor $highlightingPostprocessor, Highlighting_Postprocessor $highlightingPostprocessor,
VariablesPostprocessor $variablesPostprocessor Variables_Postprocessor $variablesPostprocessor
) { ) {
$this->registerPreprocessor($cleanupPreprocessor); $this->registerPreprocessor($cleanupPreprocessor);
$this->registerPreprocessor($blocksWidthPreprocessor); $this->registerPreprocessor($blocksWidthPreprocessor);

View File

@ -2,17 +2,17 @@
namespace MailPoet\EmailEditor\Engine\Renderer; namespace MailPoet\EmailEditor\Engine\Renderer;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer;
use MailPoet\EmailEditor\Engine\Templates\Templates; use MailPoet\EmailEditor\Engine\Templates\Templates;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use MailPoetVendor\Html2Text\Html2Text; use MailPoetVendor\Html2Text\Html2Text;
use MailPoetVendor\Pelago\Emogrifier\CssInliner; use MailPoetVendor\Pelago\Emogrifier\CssInliner;
use WP_Style_Engine; use WP_Style_Engine;
use WP_Theme_JSON; use WP_Theme_JSON;
class Renderer { class Renderer {
private ThemeController $themeController; private Theme_Controller $themeController;
private ContentRenderer $contentRenderer; private Content_Renderer $contentRenderer;
private Templates $templates; private Templates $templates;
/** @var WP_Theme_JSON|null */ /** @var WP_Theme_JSON|null */
private static $theme = null; private static $theme = null;
@ -21,9 +21,9 @@ class Renderer {
const TEMPLATE_STYLES_FILE = 'template-canvas.css'; const TEMPLATE_STYLES_FILE = 'template-canvas.css';
public function __construct( public function __construct(
ContentRenderer $contentRenderer, Content_Renderer $contentRenderer,
Templates $templates, Templates $templates,
ThemeController $themeController Theme_Controller $themeController
) { ) {
$this->contentRenderer = $contentRenderer; $this->contentRenderer = $contentRenderer;
$this->templates = $templates; $this->templates = $templates;

View File

@ -13,10 +13,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class Heading extends AbstractBlockRenderer { class Heading extends AbstractBlockRenderer {
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $blockContent; return $blockContent;
} }
} }
@ -28,11 +28,11 @@ class Heading extends AbstractBlockRenderer {
```php ```php
<?php <?php
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
add_action('mailpoet_blocks_renderer_initialized', 'register_my_block_email_renderer'); add_action('mailpoet_blocks_renderer_initialized', 'register_my_block_email_renderer');
function register_my_block_email_renderer(BlocksRegistry $blocksRegistry): void { function register_my_block_email_renderer(Blocks_Registry $blocksRegistry): void {
$blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Heading()); $blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Heading());
} }
``` ```

View File

@ -2,19 +2,19 @@
namespace MailPoet\EmailEditor\Engine\Templates; namespace MailPoet\EmailEditor\Engine\Templates;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use MailPoet\EmailEditor\Validator\Builder; use MailPoet\EmailEditor\Validator\Builder;
use WP_Theme_JSON; use WP_Theme_JSON;
class TemplatePreview { class Template_Preview {
private ThemeController $themeController; private Theme_Controller $themeController;
private SettingsController $settingsController; private Settings_Controller $settingsController;
private Templates $templates; private Templates $templates;
public function __construct( public function __construct(
ThemeController $themeController, Theme_Controller $themeController,
SettingsController $settingsController, Settings_Controller $settingsController,
Templates $templates Templates $templates
) { ) {
$this->themeController = $themeController; $this->themeController = $themeController;

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine\Templates; namespace MailPoet\EmailEditor\Engine\Templates;
use MailPoet\EmailEditor\Engine\EmailStylesSchema; use MailPoet\EmailEditor\Engine\Email_Styles_Schema;
use WP_Block_Template; use WP_Block_Template;
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps // phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
@ -187,7 +187,7 @@ class Templates {
self::MAILPOET_EMAIL_META_THEME_TYPE, self::MAILPOET_EMAIL_META_THEME_TYPE,
[ [
'show_in_rest' => [ 'show_in_rest' => [
'schema' => (new EmailStylesSchema())->getSchema(), 'schema' => (new Email_Styles_Schema())->getSchema(),
], ],
'single' => true, 'single' => true,
'type' => 'object', 'type' => 'object',
@ -204,7 +204,7 @@ class Templates {
'update_callback' => function($value, $template) { 'update_callback' => function($value, $template) {
return update_post_meta($template->wp_id, self::MAILPOET_EMAIL_META_THEME_TYPE, $value); return update_post_meta($template->wp_id, self::MAILPOET_EMAIL_META_THEME_TYPE, $value);
}, },
'schema' => (new EmailStylesSchema())->getSchema(), 'schema' => (new Email_Styles_Schema())->getSchema(),
] ]
); );
} }

View File

@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine;
use MailPoet\EmailEditor\Validator\Builder; use MailPoet\EmailEditor\Validator\Builder;
class EmailApiController { class Email_Api_Controller {
/** /**
* @return array - Email specific data such styles. * @return array - Email specific data such styles.
*/ */

View File

@ -3,7 +3,7 @@
namespace MailPoet\EmailEditor\Engine; namespace MailPoet\EmailEditor\Engine;
use MailPoet\EmailEditor\Engine\Patterns\Patterns; use MailPoet\EmailEditor\Engine\Patterns\Patterns;
use MailPoet\EmailEditor\Engine\Templates\TemplatePreview; use MailPoet\EmailEditor\Engine\Templates\Template_Preview;
use MailPoet\EmailEditor\Engine\Templates\Templates; use MailPoet\EmailEditor\Engine\Templates\Templates;
use WP_Post; use WP_Post;
use WP_Theme_JSON; use WP_Theme_JSON;
@ -12,21 +12,21 @@ use WP_Theme_JSON;
* @phpstan-type EmailPostType array{name: string, args: array, meta: array{key: string, args: array}[]} * @phpstan-type EmailPostType array{name: string, args: array, meta: array{key: string, args: array}[]}
* See register_post_type for details about EmailPostType args. * See register_post_type for details about EmailPostType args.
*/ */
class EmailEditor { class Email_Editor {
public const MAILPOET_EMAIL_META_THEME_TYPE = 'mailpoet_email_theme'; public const MAILPOET_EMAIL_META_THEME_TYPE = 'mailpoet_email_theme';
private EmailApiController $emailApiController; private Email_Api_Controller $emailApiController;
private Templates $templates; private Templates $templates;
private TemplatePreview $templatePreview; private Template_Preview $templatePreview;
private Patterns $patterns; private Patterns $patterns;
private SettingsController $settingsController; private Settings_Controller $settingsController;
public function __construct( public function __construct(
EmailApiController $emailApiController, Email_Api_Controller $emailApiController,
Templates $templates, Templates $templates,
TemplatePreview $templatePreview, Template_Preview $templatePreview,
Patterns $patterns, Patterns $patterns,
SettingsController $settingsController Settings_Controller $settingsController
) { ) {
$this->emailApiController = $emailApiController; $this->emailApiController = $emailApiController;
$this->templates = $templates; $this->templates = $templates;
@ -115,11 +115,11 @@ class EmailEditor {
} }
public function getEmailThemeDataSchema(): array { public function getEmailThemeDataSchema(): array {
return (new EmailStylesSchema())->getSchema(); return (new Email_Styles_Schema())->getSchema();
} }
public function extendEmailThemeStyles(WP_Theme_JSON $theme, WP_Post $post): WP_Theme_JSON { public function extendEmailThemeStyles(WP_Theme_JSON $theme, WP_Post $post): WP_Theme_JSON {
$emailTheme = get_post_meta($post->ID, EmailEditor::MAILPOET_EMAIL_META_THEME_TYPE, true); $emailTheme = get_post_meta($post->ID, Email_Editor::MAILPOET_EMAIL_META_THEME_TYPE, true);
if ($emailTheme && is_array($emailTheme)) { if ($emailTheme && is_array($emailTheme)) {
$theme->merge(new WP_Theme_JSON($emailTheme)); $theme->merge(new WP_Theme_JSON($emailTheme));
} }

View File

@ -4,7 +4,7 @@ namespace MailPoet\EmailEditor\Engine;
use MailPoet\EmailEditor\Validator\Builder; use MailPoet\EmailEditor\Validator\Builder;
class EmailStylesSchema { class Email_Styles_Schema {
public function getSchema(): array { public function getSchema(): array {
$typographyProps = Builder::object([ $typographyProps = Builder::object([
'fontFamily' => Builder::string()->nullable(), 'fontFamily' => Builder::string()->nullable(),

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine; namespace MailPoet\EmailEditor\Engine;
class SettingsController { class Settings_Controller {
const ALLOWED_BLOCK_TYPES = [ const ALLOWED_BLOCK_TYPES = [
'core/button', 'core/button',
@ -22,15 +22,15 @@ class SettingsController {
'enableCustomUnits' => ['px', '%'], 'enableCustomUnits' => ['px', '%'],
]; ];
private ThemeController $themeController; private Theme_Controller $themeController;
private array $iframeAssets = []; private array $iframeAssets = [];
/** /**
* @param ThemeController $themeController * @param Theme_Controller $themeController
*/ */
public function __construct( public function __construct(
ThemeController $themeController Theme_Controller $themeController
) { ) {
$this->themeController = $themeController; $this->themeController = $themeController;
} }

View File

@ -10,7 +10,7 @@ use WP_Theme_JSON_Resolver;
* E-mail editor works with own theme.json which defines settings for the editor and styles for the e-mail. * E-mail editor works with own theme.json which defines settings for the editor and styles for the e-mail.
* This class is responsible for accessing data defined by the theme.json. * This class is responsible for accessing data defined by the theme.json.
*/ */
class ThemeController { class Theme_Controller {
private WP_Theme_JSON $coreTheme; private WP_Theme_JSON $coreTheme;
private WP_Theme_JSON $baseTheme; private WP_Theme_JSON $baseTheme;

View File

@ -2,14 +2,14 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlockRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Block_Renderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use WP_Style_Engine; use WP_Style_Engine;
/** /**
* Shared functionality for block renderers. * Shared functionality for block renderers.
*/ */
abstract class AbstractBlockRenderer implements BlockRenderer { abstract class Abstract_Block_Renderer implements Block_Renderer {
/** /**
* Wrapper for wp_style_engine_get_styles which ensures all values are returned. * Wrapper for wp_style_engine_get_styles which ensures all values are returned.
* *
@ -54,12 +54,12 @@ abstract class AbstractBlockRenderer implements BlockRenderer {
); );
} }
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $this->addSpacer( return $this->addSpacer(
$this->renderContent($blockContent, $parsedBlock, $settingsController), $this->renderContent($blockContent, $parsedBlock, $settingsController),
$parsedBlock['email_attrs'] ?? [] $parsedBlock['email_attrs'] ?? []
); );
} }
abstract protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string; abstract protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string;
} }

View File

@ -2,15 +2,15 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper; use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
/** /**
* Renders a button block. * Renders a button block.
* @see https://www.activecampaign.com/blog/email-buttons * @see https://www.activecampaign.com/blog/email-buttons
* @see https://documentation.mjml.io/#mj-button * @see https://documentation.mjml.io/#mj-button
*/ */
class Button extends AbstractBlockRenderer { class Button extends Abstract_Block_Renderer {
private function getWrapperStyles(array $blockStyles) { private function getWrapperStyles(array $blockStyles) {
$properties = ['border', 'color', 'typography', 'spacing']; $properties = ['border', 'color', 'typography', 'spacing'];
$styles = $this->getStylesFromBlock(array_intersect_key($blockStyles, array_flip($properties))); $styles = $this->getStylesFromBlock(array_intersect_key($blockStyles, array_flip($properties)));
@ -33,16 +33,16 @@ class Button extends AbstractBlockRenderer {
]; ];
} }
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $this->renderContent($blockContent, $parsedBlock, $settingsController); return $this->renderContent($blockContent, $parsedBlock, $settingsController);
} }
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
if (empty($parsedBlock['innerHTML'])) { if (empty($parsedBlock['innerHTML'])) {
return ''; return '';
} }
$domHelper = new DomDocumentHelper($parsedBlock['innerHTML']); $domHelper = new Dom_Document_Helper($parsedBlock['innerHTML']);
$blockClassname = $domHelper->getAttributeValueByTagName('div', 'class') ?? ''; $blockClassname = $domHelper->getAttributeValueByTagName('div', 'class') ?? '';
$buttonLink = $domHelper->findElement('a'); $buttonLink = $domHelper->findElement('a');

View File

@ -2,20 +2,20 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\FlexLayoutRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\Flex_Layout_Renderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class Buttons extends AbstractBlockRenderer { class Buttons extends Abstract_Block_Renderer {
/** @var FlexLayoutRenderer */ /** @var Flex_Layout_Renderer */
private $flexLayoutRenderer; private $flexLayoutRenderer;
public function __construct( public function __construct(
FlexLayoutRenderer $flexLayoutRenderer Flex_Layout_Renderer $flexLayoutRenderer
) { ) {
$this->flexLayoutRenderer = $flexLayoutRenderer; $this->flexLayoutRenderer = $flexLayoutRenderer;
} }
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
// Ignore font size set on the buttons block // Ignore font size set on the buttons block
// We rely on TypographyPreprocessor to set the font size on the buttons // We rely on TypographyPreprocessor to set the font size on the buttons
// Rendering font size on the wrapper causes unwanted whitespace below the buttons // Rendering font size on the wrapper causes unwanted whitespace below the buttons

View File

@ -2,12 +2,11 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer; use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper;
use WP_Style_Engine; use WP_Style_Engine;
class Column extends AbstractBlockRenderer { class Column extends Abstract_Block_Renderer {
/** /**
* Override this method to disable spacing (block gap) for columns. * Override this method to disable spacing (block gap) for columns.
* Spacing is applied on wrapping columns block. Columns are rendered side by side so no spacer is needed. * Spacing is applied on wrapping columns block. Columns are rendered side by side so no spacer is needed.
@ -16,7 +15,7 @@ class Column extends AbstractBlockRenderer {
return $content; return $content;
} }
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$content = ''; $content = '';
foreach ($parsedBlock['innerBlocks'] ?? [] as $block) { foreach ($parsedBlock['innerBlocks'] ?? [] as $block) {
$content .= render_block($block); $content .= render_block($block);
@ -32,8 +31,8 @@ class Column extends AbstractBlockRenderer {
/** /**
* Based on MJML <mj-column> * Based on MJML <mj-column>
*/ */
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$originalWrapperClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? ''; $originalWrapperClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
$block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [ $block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
'verticalAlignment' => 'stretch', 'verticalAlignment' => 'stretch',
'width' => $settingsController->getLayoutWidthWithoutPadding(), 'width' => $settingsController->getLayoutWidthWithoutPadding(),

View File

@ -2,13 +2,13 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer; use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Abstract_Block_Renderer;
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper; use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
use WP_Style_Engine; use WP_Style_Engine;
class Columns extends AbstractBlockRenderer { class Columns extends Abstract_Block_Renderer {
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$content = ''; $content = '';
foreach ($parsedBlock['innerBlocks'] ?? [] as $block) { foreach ($parsedBlock['innerBlocks'] ?? [] as $block) {
$content .= render_block($block); $content .= render_block($block);
@ -24,8 +24,8 @@ class Columns extends AbstractBlockRenderer {
/** /**
* Based on MJML <mj-section> * Based on MJML <mj-section>
*/ */
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$originalWrapperClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? ''; $originalWrapperClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
$block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [ $block_attributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
'align' => null, 'align' => null,
'width' => $settingsController->getLayoutWidthWithoutPadding(), 'width' => $settingsController->getLayoutWidthWithoutPadding(),

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
/** /**
* Fallback block renderer. * Fallback block renderer.
@ -13,8 +13,8 @@ use MailPoet\EmailEditor\Engine\SettingsController;
* *
* We need to find a better abstraction/architecture for this. * We need to find a better abstraction/architecture for this.
*/ */
class Fallback extends AbstractBlockRenderer { class Fallback extends Abstract_Block_Renderer {
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $blockContent; return $blockContent;
} }
} }

View File

@ -2,13 +2,13 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\AbstractBlockRenderer; use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Abstract_Block_Renderer;
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper; use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
use WP_Style_Engine; use WP_Style_Engine;
class Group extends AbstractBlockRenderer { class Group extends Abstract_Block_Renderer {
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$content = ''; $content = '';
$innerBlocks = $parsedBlock['innerBlocks'] ?? []; $innerBlocks = $parsedBlock['innerBlocks'] ?? [];
@ -23,8 +23,8 @@ class Group extends AbstractBlockRenderer {
); );
} }
private function getBlockWrapper(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { private function getBlockWrapper(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$originalClassname = (new DomDocumentHelper($blockContent))->getAttributeValueByTagName('div', 'class') ?? ''; $originalClassname = (new Dom_Document_Helper($blockContent))->getAttributeValueByTagName('div', 'class') ?? '';
$blockAttributes = wp_parse_args($parsedBlock['attrs'] ?? [], [ $blockAttributes = wp_parse_args($parsedBlock['attrs'] ?? [], [
'style' => [], 'style' => [],
'backgroundColor' => '', 'backgroundColor' => '',

View File

@ -2,11 +2,11 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Integrations\Utils\DomDocumentHelper; use MailPoet\EmailEditor\Integrations\Utils\Dom_Document_Helper;
class Image extends AbstractBlockRenderer { class Image extends Abstract_Block_Renderer {
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$parsedHtml = $this->parseBlockContent($blockContent); $parsedHtml = $this->parseBlockContent($blockContent);
if (!$parsedHtml) { if (!$parsedHtml) {
@ -47,7 +47,7 @@ class Image extends AbstractBlockRenderer {
/** /**
* When the width is not set, it's important to get it for the image to be displayed correctly * When the width is not set, it's important to get it for the image to be displayed correctly
*/ */
private function addImageSizeWhenMissing(array $parsedBlock, string $imageUrl, SettingsController $settingsController): array { private function addImageSizeWhenMissing(array $parsedBlock, string $imageUrl, Settings_Controller $settingsController): array {
if (isset($parsedBlock['attrs']['width'])) { if (isset($parsedBlock['attrs']['width'])) {
return $parsedBlock; return $parsedBlock;
} }
@ -65,7 +65,6 @@ class Image extends AbstractBlockRenderer {
} }
private function applyImageBorderStyle(string $blockContent, array $parsedBlock, string $class): string { private function applyImageBorderStyle(string $blockContent, array $parsedBlock, string $class): string {
// Getting individual border properties // Getting individual border properties
$borderStyles = wp_style_engine_get_styles(['border' => $parsedBlock['attrs']['style']['border'] ?? []]); $borderStyles = wp_style_engine_get_styles(['border' => $parsedBlock['attrs']['style']['border'] ?? []]);
$borderStyles = $borderStyles['declarations'] ?? []; $borderStyles = $borderStyles['declarations'] ?? [];
@ -91,7 +90,7 @@ class Image extends AbstractBlockRenderer {
/** /**
* Settings width and height attributes for images is important for MS Outlook. * Settings width and height attributes for images is important for MS Outlook.
*/ */
private function addImageDimensions($blockContent, array $parsedBlock, SettingsController $settingsController): string { private function addImageDimensions($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$html = new \WP_HTML_Tag_Processor($blockContent); $html = new \WP_HTML_Tag_Processor($blockContent);
if ($html->next_tag(['tag_name' => 'img'])) { if ($html->next_tag(['tag_name' => 'img'])) {
// Getting height from styles and if it's set, we set the height attribute // Getting height from styles and if it's set, we set the height attribute
@ -117,7 +116,7 @@ class Image extends AbstractBlockRenderer {
* This method configure the font size of the caption because it's set to 0 for the parent element to avoid unexpected white spaces * This method configure the font size of the caption because it's set to 0 for the parent element to avoid unexpected white spaces
* We try to use font-size passed down from the parent element $parsedBlock['email_attrs']['font-size'], but if it's not set, we use the default font-size from the email theme. * We try to use font-size passed down from the parent element $parsedBlock['email_attrs']['font-size'], but if it's not set, we use the default font-size from the email theme.
*/ */
private function getCaptionStyles(SettingsController $settingsController, array $parsedBlock): string { private function getCaptionStyles(Settings_Controller $settingsController, array $parsedBlock): string {
$themeData = $settingsController->getTheme()->get_data(); $themeData = $settingsController->getTheme()->get_data();
$styles = [ $styles = [
@ -131,7 +130,7 @@ class Image extends AbstractBlockRenderer {
/** /**
* Based on MJML <mj-image> but because MJML doesn't support captions, our solution is a bit different * Based on MJML <mj-image> but because MJML doesn't support captions, our solution is a bit different
*/ */
private function getBlockWrapper(array $parsedBlock, SettingsController $settingsController, ?string $caption): string { private function getBlockWrapper(array $parsedBlock, Settings_Controller $settingsController, ?string $caption): string {
$styles = [ $styles = [
'border-collapse' => 'collapse', 'border-collapse' => 'collapse',
'border-spacing' => '0px', 'border-spacing' => '0px',
@ -244,7 +243,7 @@ class Image extends AbstractBlockRenderer {
return null; return null;
} }
$domHelper = new DomDocumentHelper($blockContent); $domHelper = new Dom_Document_Helper($blockContent);
$figureTag = $domHelper->findElement('figure'); $figureTag = $domHelper->findElement('figure');
if (!$figureTag) { if (!$figureTag) {

View File

@ -2,11 +2,11 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
// We have to avoid using keyword `List` // We have to avoid using keyword `List`
class ListBlock extends AbstractBlockRenderer { class List_Block extends Abstract_Block_Renderer {
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
$html = new \WP_HTML_Tag_Processor($blockContent); $html = new \WP_HTML_Tag_Processor($blockContent);
$tagName = ($parsedBlock['attrs']['ordered'] ?? false) ? 'ol' : 'ul'; $tagName = ($parsedBlock['attrs']['ordered'] ?? false) ? 'ol' : 'ul';
if ($html->next_tag(['tag_name' => $tagName])) { if ($html->next_tag(['tag_name' => $tagName])) {

View File

@ -2,9 +2,9 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ListItem extends AbstractBlockRenderer { class List_Item extends Abstract_Block_Renderer {
/** /**
* Override this method to disable spacing (block gap) for list items. * Override this method to disable spacing (block gap) for list items.
*/ */
@ -12,7 +12,7 @@ class ListItem extends AbstractBlockRenderer {
return $content; return $content;
} }
protected function renderContent($blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent($blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $blockContent; return $blockContent;
} }
} }

View File

@ -2,13 +2,13 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
/** /**
* This renderer covers both core/paragraph and core/heading blocks * This renderer covers both core/paragraph and core/heading blocks
*/ */
class Text extends AbstractBlockRenderer { class Text extends Abstract_Block_Renderer {
protected function renderContent(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { protected function renderContent(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
// Do not render empty blocks. // Do not render empty blocks.
if (empty(trim(strip_tags($blockContent)))) { if (empty(trim(strip_tags($blockContent)))) {
return ''; return '';

View File

@ -2,8 +2,8 @@
namespace MailPoet\EmailEditor\Integrations\Core; namespace MailPoet\EmailEditor\Integrations\Core;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\FlexLayoutRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout\Flex_Layout_Renderer;
class Initializer { class Initializer {
public function initialize(): void { public function initialize(): void {
@ -15,15 +15,15 @@ class Initializer {
/** /**
* Register core blocks email renderers when the blocks renderer is initialized. * Register core blocks email renderers when the blocks renderer is initialized.
*/ */
public function registerCoreBlocksRenderers(BlocksRegistry $blocksRegistry): void { public function registerCoreBlocksRenderers(Blocks_Registry $blocksRegistry): void {
$blocksRegistry->addBlockRenderer('core/paragraph', new Renderer\Blocks\Text()); $blocksRegistry->addBlockRenderer('core/paragraph', new Renderer\Blocks\Text());
$blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Text()); $blocksRegistry->addBlockRenderer('core/heading', new Renderer\Blocks\Text());
$blocksRegistry->addBlockRenderer('core/column', new Renderer\Blocks\Column()); $blocksRegistry->addBlockRenderer('core/column', new Renderer\Blocks\Column());
$blocksRegistry->addBlockRenderer('core/columns', new Renderer\Blocks\Columns()); $blocksRegistry->addBlockRenderer('core/columns', new Renderer\Blocks\Columns());
$blocksRegistry->addBlockRenderer('core/list', new Renderer\Blocks\ListBlock()); $blocksRegistry->addBlockRenderer('core/list', new Renderer\Blocks\List_Block());
$blocksRegistry->addBlockRenderer('core/list-item', new Renderer\Blocks\ListItem()); $blocksRegistry->addBlockRenderer('core/list-item', new Renderer\Blocks\List_Item());
$blocksRegistry->addBlockRenderer('core/image', new Renderer\Blocks\Image()); $blocksRegistry->addBlockRenderer('core/image', new Renderer\Blocks\Image());
$blocksRegistry->addBlockRenderer('core/buttons', new Renderer\Blocks\Buttons(new FlexLayoutRenderer())); $blocksRegistry->addBlockRenderer('core/buttons', new Renderer\Blocks\Buttons(new Flex_Layout_Renderer()));
$blocksRegistry->addBlockRenderer('core/button', new Renderer\Blocks\Button()); $blocksRegistry->addBlockRenderer('core/button', new Renderer\Blocks\Button());
$blocksRegistry->addBlockRenderer('core/group', new Renderer\Blocks\Group()); $blocksRegistry->addBlockRenderer('core/group', new Renderer\Blocks\Group());
// Render used for all other blocks // Render used for all other blocks

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Integrations\Utils;
/** /**
* This class should guarantee that our work with the DOMDocument is unified and safe. * This class should guarantee that our work with the DOMDocument is unified and safe.
*/ */
class DomDocumentHelper { class Dom_Document_Helper {
private \DOMDocument $dom; private \DOMDocument $dom;
public function __construct( public function __construct(

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Utils; namespace MailPoet\EmailEditor\Utils;
class CdnAssetUrl { class Cdn_Asset_Url {
const CDN_URL = 'https://ps.w.org/mailpoet/'; const CDN_URL = 'https://ps.w.org/mailpoet/';
/** @var string */ /** @var string */
private $baseUrl; private $baseUrl;

View File

@ -1,57 +0,0 @@
<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Validator;
use MailPoet\EmailEditor\Validator\Schema\AnyOfSchema;
use MailPoet\EmailEditor\Validator\Schema\ArraySchema;
use MailPoet\EmailEditor\Validator\Schema\BooleanSchema;
use MailPoet\EmailEditor\Validator\Schema\IntegerSchema;
use MailPoet\EmailEditor\Validator\Schema\NullSchema;
use MailPoet\EmailEditor\Validator\Schema\NumberSchema;
use MailPoet\EmailEditor\Validator\Schema\ObjectSchema;
use MailPoet\EmailEditor\Validator\Schema\OneOfSchema;
use MailPoet\EmailEditor\Validator\Schema\StringSchema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/
class Builder {
public static function string(): StringSchema {
return new StringSchema();
}
public static function number(): NumberSchema {
return new NumberSchema();
}
public static function integer(): IntegerSchema {
return new IntegerSchema();
}
public static function boolean(): BooleanSchema {
return new BooleanSchema();
}
public static function null(): NullSchema {
return new NullSchema();
}
public static function array(Schema $items = null): ArraySchema {
$array = new ArraySchema();
return $items ? $array->items($items) : $array;
}
/** @param array<string, Schema>|null $properties */
public static function object(array $properties = null): ObjectSchema {
$object = new ObjectSchema();
return $properties === null ? $object : $object->properties($properties);
}
/** @param Schema[] $schemas */
public static function oneOf(array $schemas): OneOfSchema {
return new OneOfSchema($schemas);
}
/** @param Schema[] $schemas */
public static function anyOf(array $schemas): AnyOfSchema {
return new AnyOfSchema($schemas);
}
}

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof
class AnyOfSchema extends Schema { class Any_Of_Schema extends Schema {
protected $schema = [ protected $schema = [
'anyOf' => [], 'anyOf' => [],
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#arrays // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#arrays
class ArraySchema extends Schema { class Array_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'array', 'type' => 'array',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types
class BooleanSchema extends Schema { class Boolean_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'boolean', 'type' => 'boolean',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers
class IntegerSchema extends Schema { class Integer_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'integer', 'type' => 'integer',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#primitive-types
class NullSchema extends Schema { class Null_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'null', 'type' => 'null',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#numbers
class NumberSchema extends Schema { class Number_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'number', 'type' => 'number',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#objects // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#objects
class ObjectSchema extends Schema { class Object_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'object', 'type' => 'object',
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#oneof-and-anyof
class OneOfSchema extends Schema { class One_Of_Schema extends Schema {
protected $schema = [ protected $schema = [
'oneOf' => [], 'oneOf' => [],
]; ];

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator\Schema;
use MailPoet\EmailEditor\Validator\Schema; use MailPoet\EmailEditor\Validator\Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#strings // See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/#strings
class StringSchema extends Schema { class String_Schema extends Schema {
protected $schema = [ protected $schema = [
'type' => 'string', 'type' => 'string',
]; ];

View File

@ -0,0 +1,57 @@
<?php declare(strict_types = 1);
namespace MailPoet\EmailEditor\Validator;
use MailPoet\EmailEditor\Validator\Schema\Any_Of_Schema;
use MailPoet\EmailEditor\Validator\Schema\Array_Schema;
use MailPoet\EmailEditor\Validator\Schema\Boolean_Schema;
use MailPoet\EmailEditor\Validator\Schema\Integer_Schema;
use MailPoet\EmailEditor\Validator\Schema\Null_Schema;
use MailPoet\EmailEditor\Validator\Schema\Number_Schema;
use MailPoet\EmailEditor\Validator\Schema\Object_Schema;
use MailPoet\EmailEditor\Validator\Schema\One_Of_Schema;
use MailPoet\EmailEditor\Validator\Schema\String_Schema;
// See: https://developer.wordpress.org/rest-api/extending-the-rest-api/schema/
class Builder {
public static function string(): String_Schema {
return new String_Schema();
}
public static function number(): Number_Schema {
return new Number_Schema();
}
public static function integer(): Integer_Schema {
return new Integer_Schema();
}
public static function boolean(): Boolean_Schema {
return new Boolean_Schema();
}
public static function null(): Null_Schema {
return new Null_Schema();
}
public static function array(Schema $items = null): Array_Schema {
$array = new Array_Schema();
return $items ? $array->items($items) : $array;
}
/** @param array<string, Schema>|null $properties */
public static function object(array $properties = null): Object_Schema {
$object = new Object_Schema();
return $properties === null ? $object : $object->properties($properties);
}
/** @param Schema[] $schemas */
public static function oneOf(array $schemas): One_Of_Schema {
return new One_Of_Schema($schemas);
}
/** @param Schema[] $schemas */
public static function anyOf(array $schemas): Any_Of_Schema {
return new Any_Of_Schema($schemas);
}
}

View File

@ -5,7 +5,7 @@ namespace MailPoet\EmailEditor\Validator;
use MailPoet\UnexpectedValueException; use MailPoet\UnexpectedValueException;
use WP_Error; use WP_Error;
class ValidationException extends UnexpectedValueException { class Validation_Exception extends UnexpectedValueException {
/** @var WP_Error */ /** @var WP_Error */
protected $wpError; protected $wpError;

View File

@ -39,7 +39,7 @@ class Validator {
public function validateSchemaArray(array $schema, $value, string $paramName = 'value') { public function validateSchemaArray(array $schema, $value, string $paramName = 'value') {
$result = $this->validateAndSanitizeValueFromSchema($value, $schema, $paramName); $result = $this->validateAndSanitizeValueFromSchema($value, $schema, $paramName);
if ($result instanceof WP_Error) { if ($result instanceof WP_Error) {
throw ValidationException::createFromWpError($result); throw Validation_Exception::createFromWpError($result);
} }
return $result; return $result;
} }

View File

@ -1,5 +1,6 @@
<?php <?php
use _generated\UnitTesterActions;
/** /**
* Inherited Methods * Inherited Methods
@ -18,7 +19,7 @@
*/ */
class UnitTester extends \Codeception\Actor class UnitTester extends \Codeception\Actor
{ {
use _generated\UnitTesterActions; use UnitTesterActions;
/** /**
* Define custom actions here * Define custom actions here

View File

@ -2,8 +2,8 @@
namespace MailPoet\EmailEditor\Engine; namespace MailPoet\EmailEditor\Engine;
class EmailEditorTest extends \MailPoetTest { class Email_Editor_Test extends \MailPoetTest {
/** @var EmailEditor */ /** @var Email_Editor */
private $emailEditor; private $emailEditor;
/** @var callable */ /** @var callable */
@ -11,7 +11,7 @@ class EmailEditorTest extends \MailPoetTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->emailEditor = $this->diContainer->get(EmailEditor::class); $this->emailEditor = $this->diContainer->get(Email_Editor::class);
$this->postRegisterCallback = function ($postTypes) { $this->postRegisterCallback = function ($postTypes) {
$postTypes[] = [ $postTypes[] = [
'name' => 'custom_email_type', 'name' => 'custom_email_type',

View File

@ -4,16 +4,16 @@ namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Text; use MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks\Text;
require_once __DIR__ . '/DummyBlockRenderer.php'; require_once __DIR__ . '/Dummy_Block_Renderer.php';
class BlocksRegistryTest extends \MailPoetTest { class Blocks_Registry_Test extends \MailPoetTest {
/** @var BlocksRegistry */ /** @var Blocks_Registry */
private $registry; private $registry;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->registry = $this->diContainer->get(BlocksRegistry::class); $this->registry = $this->diContainer->get(Blocks_Registry::class);
} }
public function testItReturnsNullForUnknownRenderer() { public function testItReturnsNullForUnknownRenderer() {

View File

@ -2,21 +2,21 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController; use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
require_once __DIR__ . '/DummyBlockRenderer.php'; require_once __DIR__ . '/Dummy_Block_Renderer.php';
class ContentRendererTest extends \MailPoetTest { class Content_Renderer_Test extends \MailPoetTest {
private ContentRenderer $renderer; private Content_Renderer $renderer;
private \WP_Post $emailPost; private \WP_Post $emailPost;
public function _before(): void { public function _before(): void {
parent::_before(); parent::_before();
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->diContainer->get(BlockTypesController::class)->initialize(); $this->diContainer->get(BlockTypesController::class)->initialize();
$this->renderer = $this->diContainer->get(ContentRenderer::class); $this->renderer = $this->diContainer->get(Content_Renderer::class);
$this->emailPost = $this->tester->createPost([ $this->emailPost = $this->tester->createPost([
'post_content' => '<!-- wp:paragraph --><p>Hello!</p><!-- /wp:paragraph -->', 'post_content' => '<!-- wp:paragraph --><p>Hello!</p><!-- /wp:paragraph -->',
]); ]);

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class DummyBlockRenderer implements BlockRenderer { class Dummy_Block_Renderer implements Block_Renderer {
public function render(string $blockContent, array $parsedBlock, SettingsController $settingsController): string { public function render(string $blockContent, array $parsedBlock, Settings_Controller $settingsController): string {
return $parsedBlock['innerHtml']; return $parsedBlock['innerHtml'];
} }
} }

View File

@ -2,23 +2,23 @@
namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout; namespace MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Layout;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\DummyBlockRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Dummy_Block_Renderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
require_once __DIR__ . '/../DummyBlockRenderer.php'; require_once __DIR__ . '/../Dummy_Block_Renderer.php';
class FlexLayoutRendererTest extends \MailPoetTest { class Flex_Layout_Renderer_Test extends \MailPoetTest {
/** @var FlexLayoutRenderer */ /** @var Flex_Layout_Renderer */
private $renderer; private $renderer;
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before(): void { public function _before(): void {
parent::_before(); parent::_before();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
$this->renderer = new FlexLayoutRenderer(); $this->renderer = new Flex_Layout_Renderer();
register_block_type('dummy/block', []); register_block_type('dummy/block', []);
add_filter('render_block', [$this, 'renderDummyBlock'], 10, 2); add_filter('render_block', [$this, 'renderDummyBlock'], 10, 2);
} }
@ -223,7 +223,7 @@ class FlexLayoutRendererTest extends \MailPoetTest {
} }
public function renderDummyBlock($blockContent, $parsedBlock): string { public function renderDummyBlock($blockContent, $parsedBlock): string {
$dummyRenderer = new DummyBlockRenderer(); $dummyRenderer = new Dummy_Block_Renderer();
return $dummyRenderer->render($blockContent, $parsedBlock, $this->settingsController); return $dummyRenderer->render($blockContent, $parsedBlock, $this->settingsController);
} }

View File

@ -2,18 +2,18 @@
namespace MailPoet\EmailEditor\Engine\Renderer; namespace MailPoet\EmailEditor\Engine\Renderer;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
class RendererTest extends \MailPoetTest { class Renderer_Test extends \MailPoetTest {
private Renderer $renderer; private Renderer $renderer;
private \WP_Post $emailPost; private \WP_Post $emailPost;
public function _before(): void { public function _before(): void {
parent::_before(); parent::_before();
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->renderer = $this->diContainer->get(Renderer::class); $this->renderer = $this->diContainer->get(Renderer::class);
$styles = [ $styles = [
'spacing' => [ 'spacing' => [
@ -35,9 +35,9 @@ class RendererTest extends \MailPoetTest {
$themeJsonMock->method('get_data')->willReturn([ $themeJsonMock->method('get_data')->willReturn([
'styles' => $styles, 'styles' => $styles,
]); ]);
$settingsControllerMock = $this->createMock(SettingsController::class); $settingsControllerMock = $this->createMock(Settings_Controller::class);
$settingsControllerMock->method('getEmailStyles')->willReturn($styles); $settingsControllerMock->method('getEmailStyles')->willReturn($styles);
$themeControllerMock = $this->createMock(ThemeController::class); $themeControllerMock = $this->createMock(Theme_Controller::class);
$themeControllerMock->method('getTheme')->willReturn($themeJsonMock); $themeControllerMock->method('getTheme')->willReturn($themeJsonMock);
$themeControllerMock->method('getStyles')->willReturn($styles); $themeControllerMock->method('getStyles')->willReturn($styles);
$themeControllerMock->method('getLayoutSettings')->willReturn(['contentSize' => '660px']); $themeControllerMock->method('getLayoutSettings')->willReturn(['contentSize' => '660px']);

View File

@ -2,12 +2,12 @@
namespace MailPoet\EmailEditor\Engine; namespace MailPoet\EmailEditor\Engine;
class ThemeControllerTest extends \MailPoetTest { class Theme_Controller_Test extends \MailPoetTest {
private ThemeController $themeController; private Theme_Controller $themeController;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->themeController = $this->diContainer->get(ThemeController::class); $this->themeController = $this->diContainer->get(Theme_Controller::class);
} }
public function testItGeneratesCssStylesForRenderer() { public function testItGeneratesCssStylesForRenderer() {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ButtonTest extends \MailPoetTest { class Button_Test extends \MailPoetTest {
/** @var Button */ /** @var Button */
private $buttonRenderer; private $buttonRenderer;
@ -38,13 +38,13 @@ class ButtonTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before(): void { public function _before(): void {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->buttonRenderer = new Button(); $this->buttonRenderer = new Button();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersLink(): void { public function testItRendersLink(): void {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ColumnTest extends \MailPoetTest { class Column_Test extends \MailPoetTest {
/** @var Column */ /** @var Column */
private $columnRenderer; private $columnRenderer;
@ -35,13 +35,13 @@ class ColumnTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->columnRenderer = new Column(); $this->columnRenderer = new Column();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersColumnContent() { public function testItRendersColumnContent() {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ColumnsTest extends \MailPoetTest { class Columns_Test extends \MailPoetTest {
/** @var Columns */ /** @var Columns */
private $columnsRenderer; private $columnsRenderer;
@ -42,13 +42,13 @@ class ColumnsTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->columnsRenderer = new Columns(); $this->columnsRenderer = new Columns();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersInnerColumn() { public function testItRendersInnerColumn() {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class HeadingTest extends \MailPoetTest { class Heading_Test extends \MailPoetTest {
/** @var Text */ /** @var Text */
private $headingRenderer; private $headingRenderer;
@ -34,13 +34,13 @@ class HeadingTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->headingRenderer = new Text(); $this->headingRenderer = new Text();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersContent(): void { public function testItRendersContent(): void {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ImageTest extends \MailPoetTest { class Image_Test extends \MailPoetTest {
/** @var Image */ /** @var Image */
private $imageRenderer; private $imageRenderer;
@ -32,13 +32,13 @@ class ImageTest extends \MailPoetTest {
'innerContent' => [], 'innerContent' => [],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->imageRenderer = new Image(); $this->imageRenderer = new Image();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersMandatoryImageStyles(): void { public function testItRendersMandatoryImageStyles(): void {

View File

@ -2,11 +2,11 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ListBlockTest extends \MailPoetTest { class List_Block_Test extends \MailPoetTest {
/** @var ListBlock */ /** @var List_Block */
private $listRenderer; private $listRenderer;
/** @var array */ /** @var array */
@ -41,13 +41,13 @@ class ListBlockTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->listRenderer = new ListBlock(); $this->listRenderer = new List_Block();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersListContent(): void { public function testItRendersListContent(): void {

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks; namespace MailPoet\EmailEditor\Integrations\Core\Renderer\Blocks;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class ParagraphTest extends \MailPoetTest { class Paragraph_Test extends \MailPoetTest {
/** @var Text */ /** @var Text */
private $paragraphRenderer; private $paragraphRenderer;
@ -26,13 +26,13 @@ class ParagraphTest extends \MailPoetTest {
], ],
]; ];
/** @var SettingsController */ /** @var Settings_Controller */
private $settingsController; private $settingsController;
public function _before() { public function _before() {
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->paragraphRenderer = new Text(); $this->paragraphRenderer = new Text();
$this->settingsController = $this->diContainer->get(SettingsController::class); $this->settingsController = $this->diContainer->get(Settings_Controller::class);
} }
public function testItRendersContent(): void { public function testItRendersContent(): void {

View File

@ -2,18 +2,18 @@
namespace MailPoet\EmailEditor\Integrations\Core\Renderer; namespace MailPoet\EmailEditor\Integrations\Core\Renderer;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\Renderer\Renderer; use MailPoet\EmailEditor\Engine\Renderer\Renderer;
use MailPoet\EmailEditor\Integrations\Core\Initializer; use MailPoet\EmailEditor\Integrations\Core\Initializer;
class RendererTest extends \MailPoetTest { class Renderer_Test extends \MailPoetTest {
/** @var Renderer */ /** @var Renderer */
private $renderer; private $renderer;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->renderer = $this->diContainer->get(Renderer::class); $this->renderer = $this->diContainer->get(Renderer::class);
$this->diContainer->get(EmailEditor::class)->initialize(); $this->diContainer->get(Email_Editor::class)->initialize();
$this->diContainer->get(Initializer::class)->initialize(); $this->diContainer->get(Initializer::class)->initialize();
} }

View File

@ -2,27 +2,27 @@
use Codeception\Stub; use Codeception\Stub;
use MailPoet\EmailEditor\Container; use MailPoet\EmailEditor\Container;
use MailPoet\EmailEditor\Engine\EmailApiController; use MailPoet\EmailEditor\Engine\Email_Api_Controller;
use MailPoet\EmailEditor\Engine\EmailEditor; use MailPoet\EmailEditor\Engine\Email_Editor;
use MailPoet\EmailEditor\Engine\Patterns\Patterns; use MailPoet\EmailEditor\Engine\Patterns\Patterns;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\BlocksRegistry; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Blocks_Registry;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ContentRenderer; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Content_Renderer;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager;
use MailPoet\EmailEditor\Engine\Renderer\Renderer; use MailPoet\EmailEditor\Engine\Renderer\Renderer;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
use MailPoet\EmailEditor\Engine\Templates\TemplatePreview; use MailPoet\EmailEditor\Engine\Templates\Template_Preview;
use MailPoet\EmailEditor\Engine\Templates\Templates; use MailPoet\EmailEditor\Engine\Templates\Templates;
use MailPoet\EmailEditor\Engine\Templates\Utils; use MailPoet\EmailEditor\Engine\Templates\Utils;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use MailPoet\EmailEditor\Integrations\Core\Initializer; use MailPoet\EmailEditor\Integrations\Core\Initializer;
use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController; use MailPoet\EmailEditor\Integrations\MailPoet\Blocks\BlockTypesController;
use MailPoet\EmailEditor\Utils\CdnAssetUrl; use MailPoet\EmailEditor\Utils\Cdn_Asset_Url;
if ((boolean)getenv('MULTISITE') === true) { if ((boolean)getenv('MULTISITE') === true) {
// REQUEST_URI needs to be set for WP to load the proper subsite where MailPoet is activated // REQUEST_URI needs to be set for WP to load the proper subsite where MailPoet is activated
@ -81,11 +81,11 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
$container->set(Initializer::class, function() { $container->set(Initializer::class, function() {
return new Initializer(); return new Initializer();
}); });
$container->set(CdnAssetUrl::class, function() { $container->set(Cdn_Asset_Url::class, function() {
return new CdnAssetUrl('http://localhost'); return new Cdn_Asset_Url('http://localhost');
}); });
$container->set(EmailApiController::class, function() { $container->set(Email_Api_Controller::class, function() {
return new EmailApiController(); return new Email_Api_Controller();
}); });
$container->set(BlockTypesController::class, function() { $container->set(BlockTypesController::class, function() {
return $this->createMock(BlockTypesController::class); return $this->createMock(BlockTypesController::class);
@ -94,83 +94,83 @@ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore
$container->set(Utils::class, function() { $container->set(Utils::class, function() {
return new Utils(); return new Utils();
}); });
$container->set(ThemeController::class, function() { $container->set(Theme_Controller::class, function() {
return new ThemeController(); return new Theme_Controller();
}); });
$container->set(SettingsController::class, function ($container) { $container->set(Settings_Controller::class, function ($container) {
return new SettingsController($container->get(ThemeController::class)); return new Settings_Controller($container->get(Theme_Controller::class));
}); });
$container->set(SettingsController::class, function ($container) { $container->set(Settings_Controller::class, function ($container) {
return new SettingsController($container->get(ThemeController::class)); return new Settings_Controller($container->get(Theme_Controller::class));
}); });
$container->set(Templates::class, function ($container) { $container->set(Templates::class, function ($container) {
return new Templates($container->get(Utils::class)); return new Templates($container->get(Utils::class));
}); });
$container->set(TemplatePreview::class, function ($container) { $container->set(Template_Preview::class, function ($container) {
return new TemplatePreview( return new Template_Preview(
$container->get(ThemeController::class), $container->get(Theme_Controller::class),
$container->get(SettingsController::class), $container->get(Settings_Controller::class),
$container->get(Templates::class), $container->get(Templates::class),
); );
}); });
$container->set(Patterns::class, function ($container) { $container->set(Patterns::class, function ($container) {
return new Patterns( return new Patterns(
$container->get(CdnAssetUrl::class), $container->get(Cdn_Asset_Url::class),
); );
}); });
$container->set(CleanupPreprocessor::class, function () { $container->set(Cleanup_Preprocessor::class, function () {
return new CleanupPreprocessor(); return new Cleanup_Preprocessor();
}); });
$container->set(BlocksWidthPreprocessor::class, function () { $container->set(Blocks_Width_Preprocessor::class, function () {
return new BlocksWidthPreprocessor(); return new Blocks_Width_Preprocessor();
}); });
$container->set(TypographyPreprocessor::class, function ($container) { $container->set(Typography_Preprocessor::class, function ($container) {
return new TypographyPreprocessor($container->get(SettingsController::class)); return new Typography_Preprocessor($container->get(Settings_Controller::class));
}); });
$container->set(SpacingPreprocessor::class, function () { $container->set(Spacing_Preprocessor::class, function () {
return new SpacingPreprocessor(); return new Spacing_Preprocessor();
}); });
$container->set(HighlightingPostprocessor::class, function () { $container->set(Highlighting_Postprocessor::class, function () {
return new HighlightingPostprocessor(); return new Highlighting_Postprocessor();
}); });
$container->set(VariablesPostprocessor::class, function ($container) { $container->set(Variables_Postprocessor::class, function ($container) {
return new VariablesPostprocessor($container->get(ThemeController::class)); return new Variables_Postprocessor($container->get(Theme_Controller::class));
}); });
$container->set(ProcessManager::class, function ($container) { $container->set(Process_Manager::class, function ($container) {
return new ProcessManager( return new Process_Manager(
$container->get(CleanupPreprocessor::class), $container->get(Cleanup_Preprocessor::class),
$container->get(BlocksWidthPreprocessor::class), $container->get(Blocks_Width_Preprocessor::class),
$container->get(TypographyPreprocessor::class), $container->get(Typography_Preprocessor::class),
$container->get(SpacingPreprocessor::class), $container->get(Spacing_Preprocessor::class),
$container->get(HighlightingPostprocessor::class), $container->get(Highlighting_Postprocessor::class),
$container->get(VariablesPostprocessor::class), $container->get(Variables_Postprocessor::class),
); );
}); });
$container->set(BlocksRegistry::class, function() { $container->set(Blocks_Registry::class, function() {
return new BlocksRegistry(); return new Blocks_Registry();
}); });
$container->set(ContentRenderer::class, function ($container) { $container->set(Content_Renderer::class, function ($container) {
return new ContentRenderer( return new Content_Renderer(
$container->get(ProcessManager::class), $container->get(Process_Manager::class),
$container->get(BlocksRegistry::class), $container->get(Blocks_Registry::class),
$container->get(SettingsController::class), $container->get(Settings_Controller::class),
$container->get(ThemeController::class), $container->get(Theme_Controller::class),
); );
}); });
$container->set(Renderer::class, function ($container) { $container->set(Renderer::class, function ($container) {
return new Renderer( return new Renderer(
$container->get(ContentRenderer::class), $container->get(Content_Renderer::class),
$container->get(Templates::class), $container->get(Templates::class),
$container->get(ThemeController::class), $container->get(Theme_Controller::class),
); );
}); });
$container->set(EmailEditor::class, function ($container) { $container->set(Email_Editor::class, function ($container) {
return new EmailEditor( return new Email_Editor(
$container->get(EmailApiController::class), $container->get(Email_Api_Controller::class),
$container->get(Templates::class), $container->get(Templates::class),
$container->get(TemplatePreview::class), $container->get(Template_Preview::class),
$container->get(Patterns::class), $container->get(Patterns::class),
$container->get(SettingsController::class), $container->get(Settings_Controller::class),
); );
}); });

View File

@ -6,7 +6,7 @@ use Exception;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use stdClass; use stdClass;
class ContainerTest extends TestCase { class Container_Test extends TestCase {
public function testSetAndGetService(): void { public function testSetAndGetService(): void {
$container = new Container(); $container = new Container();

View File

@ -2,15 +2,15 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
class HighlightingPostprocessorTest extends \MailPoetUnitTest { class Highlighting_Postprocessor_Test extends \MailPoetUnitTest {
/** @var HighlightingPostprocessor */ /** @var Highlighting_Postprocessor */
private $postprocessor; private $postprocessor;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->postprocessor = new HighlightingPostprocessor(); $this->postprocessor = new Highlighting_Postprocessor();
} }
public function testItReplacesHtmlElements(): void { public function testItReplacesHtmlElements(): void {

View File

@ -2,20 +2,20 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Postprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
use MailPoet\EmailEditor\Engine\ThemeController; use MailPoet\EmailEditor\Engine\Theme_Controller;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
class VariablesPostprocessorTest extends \MailPoetUnitTest { class Variables_Postprocessor_Test extends \MailPoetUnitTest {
private VariablesPostprocessor $postprocessor; private Variables_Postprocessor $postprocessor;
/** @var ThemeController & MockObject */ /** @var Theme_Controller & MockObject */
private $themeControllerMock; private $themeControllerMock;
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->themeControllerMock = $this->createMock(ThemeController::class); $this->themeControllerMock = $this->createMock(Theme_Controller::class);
$this->postprocessor = new VariablesPostprocessor($this->themeControllerMock); $this->postprocessor = new Variables_Postprocessor($this->themeControllerMock);
} }
public function testItReplacesVariablesInStyleAttributes(): void { public function testItReplacesVariablesInStyleAttributes(): void {

View File

@ -2,11 +2,11 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
class BlocksWidthPreprocessorTest extends \MailPoetUnitTest { class Blocks_Width_Preprocessor_Test extends \MailPoetUnitTest {
/** @var BlocksWidthPreprocessor */ /** @var Blocks_Width_Preprocessor */
private $preprocessor; private $preprocessor;
/** @var array{contentSize: string} */ /** @var array{contentSize: string} */
@ -17,7 +17,7 @@ class BlocksWidthPreprocessorTest extends \MailPoetUnitTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->preprocessor = new BlocksWidthPreprocessor(); $this->preprocessor = new Blocks_Width_Preprocessor();
$this->layout = ['contentSize' => '660px']; $this->layout = ['contentSize' => '660px'];
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']]; $this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
} }

View File

@ -2,9 +2,9 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
class CleanupPreprocessorTest extends \MailPoetUnitTest { class Cleanup_Preprocessor_Test extends \MailPoetUnitTest {
private const PARAGRAPH_BLOCK = [ private const PARAGRAPH_BLOCK = [
'blockName' => 'core/paragraph', 'blockName' => 'core/paragraph',
@ -22,7 +22,7 @@ class CleanupPreprocessorTest extends \MailPoetUnitTest {
]], ]],
]; ];
/** @var CleanupPreprocessor */ /** @var Cleanup_Preprocessor */
private $preprocessor; private $preprocessor;
/** @var array{contentSize: string} */ /** @var array{contentSize: string} */
@ -33,7 +33,7 @@ class CleanupPreprocessorTest extends \MailPoetUnitTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->preprocessor = new CleanupPreprocessor(); $this->preprocessor = new Cleanup_Preprocessor();
$this->layout = ['contentSize' => '660px']; $this->layout = ['contentSize' => '660px'];
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']]; $this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
} }

View File

@ -2,11 +2,11 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
class SpacingPreprocessorTest extends \MailPoetUnitTest { class Spacing_Preprocessor_Test extends \MailPoetUnitTest {
/** @var SpacingPreprocessor */ /** @var Spacing_Preprocessor */
private $preprocessor; private $preprocessor;
/** @var array{contentSize: string} */ /** @var array{contentSize: string} */
@ -17,7 +17,7 @@ class SpacingPreprocessorTest extends \MailPoetUnitTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$this->preprocessor = new SpacingPreprocessor(); $this->preprocessor = new Spacing_Preprocessor();
$this->layout = ['contentSize' => '660px']; $this->layout = ['contentSize' => '660px'];
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']]; $this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
} }

View File

@ -2,12 +2,12 @@
namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors; namespace MailPoet\EmailEditor\Engine\Renderer\Preprocessors;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
use MailPoet\EmailEditor\Engine\SettingsController; use MailPoet\EmailEditor\Engine\Settings_Controller;
class TypographyPreprocessorTest extends \MailPoetUnitTest { class Typography_Preprocessor_Test extends \MailPoetUnitTest {
/** @var TypographyPreprocessor */ /** @var Typography_Preprocessor */
private $preprocessor; private $preprocessor;
/** @var array{contentSize: string} */ /** @var array{contentSize: string} */
@ -18,7 +18,7 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();
$settingsMock = $this->createMock(SettingsController::class); $settingsMock = $this->createMock(Settings_Controller::class);
$themeMock = $this->createMock(\WP_Theme_JSON::class); $themeMock = $this->createMock(\WP_Theme_JSON::class);
$themeMock->method('get_data')->willReturn([ $themeMock->method('get_data')->willReturn([
'styles' => [ 'styles' => [
@ -52,7 +52,7 @@ class TypographyPreprocessorTest extends \MailPoetUnitTest {
$settingsMock->method('translateSlugToFontSize')->willReturnCallback(function($slug) { $settingsMock->method('translateSlugToFontSize')->willReturnCallback(function($slug) {
return str_replace('slug-', '', $slug); return str_replace('slug-', '', $slug);
}); });
$this->preprocessor = new TypographyPreprocessor($settingsMock); $this->preprocessor = new Typography_Preprocessor($settingsMock);
$this->layout = ['contentSize' => '660px']; $this->layout = ['contentSize' => '660px'];
$this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']]; $this->styles = ['spacing' => ['padding' => ['left' => '10px', 'right' => '10px', 'top' => '10px', 'bottom' => '10px'], 'blockGap' => '10px']];
} }

View File

@ -2,15 +2,15 @@
namespace MailPoet\EmailEditor\Engine\Renderer; namespace MailPoet\EmailEditor\Engine\Renderer;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\HighlightingPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Highlighting_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\VariablesPostprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Postprocessors\Variables_Postprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\BlocksWidthPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Blocks_Width_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\CleanupPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Cleanup_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\SpacingPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Spacing_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\TypographyPreprocessor; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Preprocessors\Typography_Preprocessor;
use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\ProcessManager; use MailPoet\EmailEditor\Engine\Renderer\ContentRenderer\Process_Manager;
class ProcessManagerTest extends \MailPoetUnitTest { class Process_Manager_Test extends \MailPoetUnitTest {
public function testItCallsPreprocessorsProperly(): void { public function testItCallsPreprocessorsProperly(): void {
$layout = [ $layout = [
'contentSize' => '600px', 'contentSize' => '600px',
@ -27,25 +27,25 @@ class ProcessManagerTest extends \MailPoetUnitTest {
], ],
]; ];
$cleanup = $this->createMock(CleanupPreprocessor::class); $cleanup = $this->createMock(Cleanup_Preprocessor::class);
$cleanup->expects($this->once())->method('preprocess')->willReturn([]); $cleanup->expects($this->once())->method('preprocess')->willReturn([]);
$blocksWidth = $this->createMock(BlocksWidthPreprocessor::class); $blocksWidth = $this->createMock(Blocks_Width_Preprocessor::class);
$blocksWidth->expects($this->once())->method('preprocess')->willReturn([]); $blocksWidth->expects($this->once())->method('preprocess')->willReturn([]);
$typography = $this->createMock(TypographyPreprocessor::class); $typography = $this->createMock(Typography_Preprocessor::class);
$typography->expects($this->once())->method('preprocess')->willReturn([]); $typography->expects($this->once())->method('preprocess')->willReturn([]);
$spacing = $this->createMock(SpacingPreprocessor::class); $spacing = $this->createMock(Spacing_Preprocessor::class);
$spacing->expects($this->once())->method('preprocess')->willReturn([]); $spacing->expects($this->once())->method('preprocess')->willReturn([]);
$highlighting = $this->createMock(HighlightingPostprocessor::class); $highlighting = $this->createMock(Highlighting_Postprocessor::class);
$highlighting->expects($this->once())->method('postprocess')->willReturn(''); $highlighting->expects($this->once())->method('postprocess')->willReturn('');
$variables = $this->createMock(VariablesPostprocessor::class); $variables = $this->createMock(Variables_Postprocessor::class);
$variables->expects($this->once())->method('postprocess')->willReturn(''); $variables->expects($this->once())->method('postprocess')->willReturn('');
$processManager = new ProcessManager($cleanup, $blocksWidth, $typography, $spacing, $highlighting, $variables); $processManager = new Process_Manager($cleanup, $blocksWidth, $typography, $spacing, $highlighting, $variables);
$this->assertEquals([], $processManager->preprocess([], $layout, $styles)); $this->assertEquals([], $processManager->preprocess([], $layout, $styles));
$this->assertEmpty($processManager->postprocess('')); $this->assertEmpty($processManager->postprocess(''));
} }

View File

@ -2,7 +2,7 @@
namespace MailPoet\EmailEditor\Engine; namespace MailPoet\EmailEditor\Engine;
class SettingsControllerTest extends \MailPoetUnitTest { class Settings_Controller_Test extends \MailPoetUnitTest {
public function testItGetsCorrectLayoutWidthWithoutPadding(): void { public function testItGetsCorrectLayoutWidthWithoutPadding(): void {
$themeJsonMock = $this->createMock(\WP_Theme_JSON::class); $themeJsonMock = $this->createMock(\WP_Theme_JSON::class);
$themeJsonMock->method('get_data')->willReturn([ $themeJsonMock->method('get_data')->willReturn([
@ -15,13 +15,13 @@ class SettingsControllerTest extends \MailPoetUnitTest {
], ],
], ],
]); ]);
$themeController = $this->createMock(ThemeController::class); $themeController = $this->createMock(Theme_Controller::class);
$themeController->method('getTheme')->willReturn($themeJsonMock); $themeController->method('getTheme')->willReturn($themeJsonMock);
$themeController->method('getLayoutSettings')->willReturn([ $themeController->method('getLayoutSettings')->willReturn([
"contentSize" => "660px", "contentSize" => "660px",
"wideSize" => null, "wideSize" => null,
]); ]);
$settingsController = new SettingsController($themeController); $settingsController = new Settings_Controller($themeController);
$layoutWidth = $settingsController->getLayoutWidthWithoutPadding(); $layoutWidth = $settingsController->getLayoutWidthWithoutPadding();
// default width is 660px and if we subtract padding from left and right we must get the correct value // default width is 660px and if we subtract padding from left and right we must get the correct value
$expectedWidth = 660 - 10 * 2; $expectedWidth = 660 - 10 * 2;

View File

@ -2,10 +2,10 @@
namespace MailPoet\EmailEditor\Integrations\Utils; namespace MailPoet\EmailEditor\Integrations\Utils;
class DomDocumentHelperTest extends \MailPoetUnitTest { class Dom_Document_Helper_Test extends \MailPoetUnitTest {
public function testItFindsElement(): void { public function testItFindsElement(): void {
$html = '<div><p>Some text</p></div>'; $html = '<div><p>Some text</p></div>';
$domDocumentHelper = new DomDocumentHelper($html); $domDocumentHelper = new Dom_Document_Helper($html);
$element = $domDocumentHelper->findElement('p'); $element = $domDocumentHelper->findElement('p');
$empty = $domDocumentHelper->findElement('span'); $empty = $domDocumentHelper->findElement('span');
$this->assertInstanceOf(\DOMElement::class, $element); $this->assertInstanceOf(\DOMElement::class, $element);
@ -15,7 +15,7 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
public function testItGetsAttributeValue(): void { public function testItGetsAttributeValue(): void {
$html = '<div><p class="some-class">Some text</p></div>'; $html = '<div><p class="some-class">Some text</p></div>';
$domDocumentHelper = new DomDocumentHelper($html); $domDocumentHelper = new Dom_Document_Helper($html);
$element = $domDocumentHelper->findElement('p'); $element = $domDocumentHelper->findElement('p');
$this->assertInstanceOf(\DOMElement::class, $element); $this->assertInstanceOf(\DOMElement::class, $element);
$this->assertEquals('some-class', $domDocumentHelper->getAttributeValue($element, 'class')); $this->assertEquals('some-class', $domDocumentHelper->getAttributeValue($element, 'class'));
@ -23,14 +23,14 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
public function testItGetsOuterHtml(): void { public function testItGetsOuterHtml(): void {
$html = '<div><span>Some <strong>text</strong></span></div>'; $html = '<div><span>Some <strong>text</strong></span></div>';
$domDocumentHelper = new DomDocumentHelper($html); $domDocumentHelper = new Dom_Document_Helper($html);
$element = $domDocumentHelper->findElement('span'); $element = $domDocumentHelper->findElement('span');
$this->assertInstanceOf(\DOMElement::class, $element); $this->assertInstanceOf(\DOMElement::class, $element);
$this->assertEquals('<span>Some <strong>text</strong></span>', $domDocumentHelper->getOuterHtml($element)); $this->assertEquals('<span>Some <strong>text</strong></span>', $domDocumentHelper->getOuterHtml($element));
// testings encoding of special characters // testings encoding of special characters
$html = '<div><img src="https://test.com/DALL·E-A®∑oecasƒ-803x1024.jpg"></div>'; $html = '<div><img src="https://test.com/DALL·E-A®∑oecasƒ-803x1024.jpg"></div>';
$domDocumentHelper = new DomDocumentHelper($html); $domDocumentHelper = new Dom_Document_Helper($html);
$element = $domDocumentHelper->findElement('img'); $element = $domDocumentHelper->findElement('img');
$this->assertInstanceOf(\DOMElement::class, $element); $this->assertInstanceOf(\DOMElement::class, $element);
$this->assertEquals('<img src="https://test.com/DALL%C2%B7E-A%C2%AE%E2%88%91oecas%C6%92-803x1024.jpg">', $domDocumentHelper->getOuterHtml($element)); $this->assertEquals('<img src="https://test.com/DALL%C2%B7E-A%C2%AE%E2%88%91oecas%C6%92-803x1024.jpg">', $domDocumentHelper->getOuterHtml($element));
@ -38,7 +38,7 @@ class DomDocumentHelperTest extends \MailPoetUnitTest {
public function testItGetsAttributeValueByTagName(): void { public function testItGetsAttributeValueByTagName(): void {
$html = '<div><p class="some-class">Some text</p><p class="second-paragraph"></p></div>'; $html = '<div><p class="some-class">Some text</p><p class="second-paragraph"></p></div>';
$domDocumentHelper = new DomDocumentHelper($html); $domDocumentHelper = new Dom_Document_Helper($html);
$this->assertEquals('some-class', $domDocumentHelper->getAttributeValueByTagName('p', 'class')); $this->assertEquals('some-class', $domDocumentHelper->getAttributeValueByTagName('p', 'class'));
$this->assertNull($domDocumentHelper->getAttributeValueByTagName('span', 'class')); $this->assertNull($domDocumentHelper->getAttributeValueByTagName('span', 'class'));
} }