mirror of
https://github.com/smarty-php/smarty.git
synced 2025-07-30 07:57:14 +02:00
Fix syntax error occurring when registering a function plugin that ends with the string 'close' (#1124)
Fixes #1122
This commit is contained in:
1
changelog/1122.md
Normal file
1
changelog/1122.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
- Fix syntax error occurring when registering a function plugin that ends with the string 'close' [#1122](https://github.com/smarty-php/smarty/issues/1122)
|
@ -1146,12 +1146,12 @@ class Template extends BaseCompiler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if tag is a function
|
// check if tag is a function
|
||||||
if ($this->smarty->getFunctionHandler($base_tag)) {
|
if ($this->smarty->getFunctionHandler($tag)) {
|
||||||
if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($base_tag, $this)) {
|
if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
|
||||||
return (new \Smarty\Compile\PrintExpressionCompiler())->compile(
|
return (new \Smarty\Compile\PrintExpressionCompiler())->compile(
|
||||||
['nofilter'], // functions are never auto-escaped
|
['nofilter'], // functions are never auto-escaped
|
||||||
$this,
|
$this,
|
||||||
['value' => $this->compileFunctionCall($base_tag, $args, $parameter)]
|
['value' => $this->compileFunctionCall($tag, $args, $parameter)]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1164,16 +1164,16 @@ class Template extends BaseCompiler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// the default plugin handler is a handler of last resort, it may also handle not specifically registered tags.
|
// the default plugin handler is a handler of last resort, it may also handle not specifically registered tags.
|
||||||
if ($callback = $this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_COMPILER)) {
|
if ($callback = $this->getPluginFromDefaultHandler($tag, Smarty::PLUGIN_COMPILER)) {
|
||||||
if (!empty($parameter['modifierlist'])) {
|
if (!empty($parameter['modifierlist'])) {
|
||||||
throw new CompilerException('No modifiers allowed on ' . $base_tag);
|
throw new CompilerException('No modifiers allowed on ' . $tag);
|
||||||
}
|
}
|
||||||
$tagCompiler = new \Smarty\Compile\Tag\BCPluginWrapper($callback);
|
$tagCompiler = new \Smarty\Compile\Tag\BCPluginWrapper($callback);
|
||||||
return $tagCompiler->compile($args, $this, $parameter);
|
return $tagCompiler->compile($args, $this, $parameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_FUNCTION)) {
|
if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_FUNCTION)) {
|
||||||
return $this->defaultHandlerFunctionCallCompiler->compile($args, $this, $parameter, $tag, $base_tag);
|
return $this->defaultHandlerFunctionCallCompiler->compile($args, $this, $parameter, $tag, $tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_BLOCK)) {
|
if ($this->getPluginFromDefaultHandler($base_tag, Smarty::PLUGIN_BLOCK)) {
|
||||||
|
@ -192,6 +192,15 @@ class RegisterFunctionTest extends PHPUnit_Smarty
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test registerPlugin for function name ending in 'close' #1122
|
||||||
|
*/
|
||||||
|
public function testRegisterFunctionEndingInClose()
|
||||||
|
{
|
||||||
|
$this->smarty->registerPlugin(Smarty::PLUGIN_FUNCTION, 'window_close', 'myfunction');
|
||||||
|
$this->assertEquals('hello world 1', $this->smarty->fetch('eval:{window_close value=1}'));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function myfunction($params, $smarty)
|
function myfunction($params, $smarty)
|
||||||
|
Reference in New Issue
Block a user