8
8
9
9
namespace Magento \PageBuilder \Model \Stage \Renderer ;
10
10
11
+ use Psr \Log \LoggerInterface ;
12
+
11
13
/**
12
14
* Renders a CMS Block for the stage
13
15
*
@@ -25,18 +27,26 @@ class CmsStaticBlock implements \Magento\PageBuilder\Model\Stage\RendererInterfa
25
27
*/
26
28
private $ widgetDirectiveRenderer ;
27
29
30
+ /**
31
+ * @var LoggerInterface
32
+ */
33
+ private $ loggerInterface ;
34
+
28
35
/**
29
36
* CmsStaticBlock constructor.
30
37
*
31
38
* @param \Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory
32
39
* @param WidgetDirective $widgetDirectiveRenderer
40
+ * @param LoggerInterface $loggerInterface
33
41
*/
34
42
public function __construct (
35
43
\Magento \Cms \Model \ResourceModel \Block \CollectionFactory $ blockCollectionFactory ,
36
- WidgetDirective $ widgetDirectiveRenderer
44
+ WidgetDirective $ widgetDirectiveRenderer ,
45
+ LoggerInterface $ loggerInterface
37
46
) {
38
47
$ this ->blockCollectionFactory = $ blockCollectionFactory ;
39
48
$ this ->widgetDirectiveRenderer = $ widgetDirectiveRenderer ;
49
+ $ this ->loggerInterface = $ loggerInterface ;
40
50
}
41
51
42
52
/**
@@ -95,11 +105,16 @@ public function render(array $params): array
95
105
*/
96
106
private function removeScriptTags (string $ html ) : string
97
107
{
98
- $ dom = new \DOMDocument ();
99
- $ dom ->loadHTML ($ html );
100
- foreach (iterator_to_array ($ dom ->getElementsByTagName ('script ' )) as $ item ) {
101
- $ item ->parentNode ->removeChild ($ item );
102
- }
103
- return $ dom ->saveHTML ();
108
+ $ dom = new \DOMDocument ();
109
+ try {
110
+ $ dom ->loadHTML ($ html );
111
+ } catch (\Exception $ e ) {
112
+ $ this ->loggerInterface ->critical ($ e ->getMessage ());
113
+ return $ html ;
114
+ }
115
+ foreach (iterator_to_array ($ dom ->getElementsByTagName ('script ' )) as $ item ) {
116
+ $ item ->parentNode ->removeChild ($ item );
117
+ }
118
+ return $ dom ->saveHTML ();
104
119
}
105
120
}
0 commit comments