@@ -68,6 +68,24 @@ public function toOptionArray()
68
68
return $ this ->options ;
69
69
}
70
70
71
+ /**
72
+ * Sanitize website/store option name
73
+ *
74
+ * @return string
75
+ */
76
+ protected function sanitizeName ($ name )
77
+ {
78
+ $ matches = [];
79
+ preg_match ('/\$[:]*{(.)*}/ ' , $ name , $ matches );
80
+ if (count ($ matches ) > 0 ) {
81
+ $ name = $ this ->escaper ->escapeHtml ($ this ->escaper ->escapeJs ($ name ));
82
+ } else {
83
+ $ name = $ this ->escaper ->escapeHtml ($ name );
84
+ }
85
+
86
+ return $ name ;
87
+ }
88
+
71
89
/**
72
90
* Generate current options
73
91
*
@@ -88,20 +106,20 @@ protected function generateCurrentOptions()
88
106
/** @var \Magento\Store\Model\Store $store */
89
107
foreach ($ storeCollection as $ store ) {
90
108
if ($ store ->getGroupId () == $ group ->getId ()) {
91
- $ name = $ this ->escaper -> escapeHtml ($ store ->getName ());
109
+ $ name = $ this ->sanitizeName ($ store ->getName ());
92
110
$ stores [$ name ]['label ' ] = str_repeat (' ' , 8 ) . $ name ;
93
111
$ stores [$ name ]['value ' ] = $ store ->getId ();
94
112
}
95
113
}
96
114
if (!empty ($ stores )) {
97
- $ name = $ this ->escaper -> escapeHtml ($ group ->getName ());
115
+ $ name = $ this ->sanitizeName ($ group ->getName ());
98
116
$ groups [$ name ]['label ' ] = str_repeat (' ' , 4 ) . $ name ;
99
117
$ groups [$ name ]['value ' ] = array_values ($ stores );
100
118
}
101
119
}
102
120
}
103
121
if (!empty ($ groups )) {
104
- $ name = $ this ->escaper -> escapeHtml ($ website ->getName ());
122
+ $ name = $ this ->sanitizeName ($ website ->getName ());
105
123
$ this ->currentOptions [$ name ]['label ' ] = $ name ;
106
124
$ this ->currentOptions [$ name ]['value ' ] = array_values ($ groups );
107
125
}
0 commit comments