diff --git a/lib/Form/Block/BlockRendererHelper.php b/lib/Form/Block/BlockRendererHelper.php index f09d0e986f..49aeb1b52d 100644 --- a/lib/Form/Block/BlockRendererHelper.php +++ b/lib/Form/Block/BlockRendererHelper.php @@ -81,7 +81,7 @@ class BlockRendererHelper { if (is_bool($value)) { $value = ($value) ? 'true' : 'false'; } - $validation[] = 'data-parsley-' . $rule . '="' . $value . '"'; + $validation[] = 'data-parsley-' . $rule . '="' . $this->wp->escAttr($value) . '"'; } } return join(' ', $validation); @@ -132,7 +132,7 @@ class BlockRendererHelper { if (isset($styles['bold'])) { $rules[] = 'font-weight: bold;'; } - return $rules ? 'style="' . implode("", $rules) . '"' : ''; + return $rules ? 'style="' . $this->wp->escAttr(implode("", $rules)) . '"' : ''; } public function renderInputPlaceholder(array $block): string { @@ -168,7 +168,7 @@ class BlockRendererHelper { public function getFieldLabel(array $block = []): string { return (isset($block['params']['label']) && strlen(trim($block['params']['label'])) > 0) - ? trim($block['params']['label']) : ''; + ? $this->wp->escHtml(trim($block['params']['label'])) : ''; } public function getFieldValue($block = []) { diff --git a/lib/Form/Block/Checkbox.php b/lib/Form/Block/Checkbox.php index 1e32c4f2a2..710c4a5fa6 100644 --- a/lib/Form/Block/Checkbox.php +++ b/lib/Form/Block/Checkbox.php @@ -3,6 +3,7 @@ namespace MailPoet\Form\Block; use MailPoet\Form\BlockWrapperRenderer; +use MailPoet\WP\Functions as WPFunctions; class Checkbox { @@ -12,9 +13,13 @@ class Checkbox { /** @var BlockWrapperRenderer */ private $wrapper; - public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper) { + /** @var WPFunctions */ + private $wp; + + public function __construct(BlockRendererHelper $rendererHelper, BlockWrapperRenderer $wrapper, WPFunctions $wp) { $this->rendererHelper = $rendererHelper; $this->wrapper = $wrapper; + $this->wp = $wp; } public function render(array $block, array $formSettings): string { @@ -51,12 +56,12 @@ class Checkbox { $html .= $fieldValidation; - $html .= ' /> ' . $option['value']; + $html .= ' /> ' . $this->wp->escHtml($option['value']); $html .= ''; } - $html .= ''; + $html .= ''; return $this->wrapper->render($block, $html); } diff --git a/lib/Form/Block/Column.php b/lib/Form/Block/Column.php index e33a71e4dd..c5563dd6fb 100644 --- a/lib/Form/Block/Column.php +++ b/lib/Form/Block/Column.php @@ -2,14 +2,23 @@ namespace MailPoet\Form\Block; +use MailPoet\WP\Functions as WPFunctions; + class Column { + /** @var WPFunctions */ + private $wp; + + public function __construct(WPFunctions $wp) { + $this->wp = $wp; + } + public function render(array $block, string $content): string { return "
getClass($block['params'])}{$this->getStyles($block['params'])}>$content
"; } private function getStyles(array $params): string { if (isset($params['width'])) { - return " style=\"flex-basis:{$params['width']}%;\""; + return " style=\"flex-basis:{$this->wp->escAttr($params['width'])}%;\""; } return ''; } @@ -23,6 +32,6 @@ class Column { $classes[] = $params['class_name']; } $classes = implode(' ', $classes); - return "class=\"$classes\""; + return "class=\"{$this->wp->escAttr($classes)}\""; } } diff --git a/lib/Form/Block/Columns.php b/lib/Form/Block/Columns.php index 2cca686787..cf1a46827d 100644 --- a/lib/Form/Block/Columns.php +++ b/lib/Form/Block/Columns.php @@ -2,7 +2,16 @@ namespace MailPoet\Form\Block; +use MailPoet\WP\Functions as WPFunctions; + class Columns { + /** @var WPFunctions */ + private $wp; + + public function __construct(WPFunctions $wp) { + $this->wp = $wp; + } + public function render(array $block, string $content): string { return "
getClass($block['params'] ?? [])}{$this->getStyles($block['params'] ?? [])}>$content
"; } @@ -19,7 +28,7 @@ class Columns { $styles[] = "background:{$params['gradient']};"; } if (count($styles)) { - return ' style="' . implode('', $styles) . '"'; + return ' style="' . $this->wp->escAttr(implode('', $styles)) . '"'; } return ''; } @@ -39,6 +48,6 @@ class Columns { $classes[] = $params['class_name']; } $classes = implode(' ', $classes); - return "class=\"$classes\""; + return "class=\"{$this->wp->escAttr($classes)}\""; } } diff --git a/lib/Form/Block/Date.php b/lib/Form/Block/Date.php index 585ffa31b9..249a44e298 100644 --- a/lib/Form/Block/Date.php +++ b/lib/Form/Block/Date.php @@ -4,6 +4,7 @@ namespace MailPoet\Form\Block; use MailPoet\Form\BlockStylesRenderer; use MailPoet\Form\BlockWrapperRenderer; +use MailPoet\WP\Functions as WPFunctions; class Date { @@ -16,14 +17,19 @@ class Date { /** @var BlockStylesRenderer */ private $blockStylesRenderer; + /** @var WPFunctions */ + private $wp; + public function __construct( BlockRendererHelper $rendererHelper, BlockStylesRenderer $blockStylesRenderer, - BlockWrapperRenderer $wrapper + BlockWrapperRenderer $wrapper, + WPFunctions $wp ) { $this->rendererHelper = $rendererHelper; $this->wrapper = $wrapper; $this->blockStylesRenderer = $blockStylesRenderer; + $this->wp = $wp; } public function render(array $block, array $formSettings): string { @@ -55,7 +61,7 @@ class Date { foreach ($dateSelectors as $dateSelector) { if ($dateSelector === 'DD') { $html .= ''; } else if ($dateSelector === 'MM') { $html .= ''; } else if ($dateSelector === 'YYYY') { $html .= '