Fix htmlall unescape of quotes without mbstring too

This commit is contained in:
Simon Wisselink
2022-11-22 00:47:03 +01:00
parent 6f4025b038
commit 665b216f61
2 changed files with 5 additions and 5 deletions

View File

@@ -41,7 +41,7 @@ function smarty_modifiercompiler_unescape($params, Smarty_Internal_TemplateCompi
if (Smarty::$_MBSTRING) {
return 'html_entity_decode(mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'UTF-8\'), ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ' . $params[ 2 ] . ')';
}
return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')';
return 'html_entity_decode(' . $params[ 0 ] . ', ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ' . $params[ 2 ] . ')';
case 'html':
return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)';
case 'url':

View File

@@ -40,8 +40,8 @@ class PluginModifierUnescapeTest extends PHPUnit_Smarty
public function testHtmlall()
{
$encoded = "aäЗдра><&ääвсствуйте";
$result = "Здра><&amp;ääвсствуйте";
$encoded = "&#039;&quot;a&#228;&#1047;&#1076;&#1088;&#1072;&gt;&lt;&amp;amp;&auml;&#228;&#1074;&#1089;&#1089;&#1090;&#1074;&#1091;&#1081;&#1090;&#1077;";
$result = "'\"Здра><&amp;ääвсствуйте";
$tpl = $this->smarty->createTemplate('string:{"' . $encoded . '"|unescape:"htmlall"}');
$this->assertEquals($result, $this->smarty->fetch($tpl));
}
@@ -49,8 +49,8 @@ class PluginModifierUnescapeTest extends PHPUnit_Smarty
public function testHtmlallWithoutMbstring()
{
Smarty::$_MBSTRING = false;$this->smarty->setCompileId('mb');
$encoded = "a&#228;&#1047;&#1076;&#1088;&#1072;&gt;&lt;&amp;amp;&auml;&#228;&#1074;&#1089;&#1089;&#1090;&#1074;&#1091;&#1081;&#1090;&#1077;";
$result = "Здра><&amp;ääвсствуйте";
$encoded = "&#039;&quot;a&#228;&#1047;&#1076;&#1088;&#1072;&gt;&lt;&amp;amp;&auml;&#228;&#1074;&#1089;&#1089;&#1090;&#1074;&#1091;&#1081;&#1090;&#1077;";
$result = "'\"Здра><&amp;ääвсствуйте";
$tpl = $this->smarty->createTemplate('string:{"' . $encoded . '"|unescape:"htmlall"}');
$this->assertEquals($result, $this->smarty->fetch($tpl));
Smarty::$_MBSTRING = true;