- reformating for PSR-2 coding standards https://github.com/smarty-php/smarty/pull/483

This commit is contained in:
uwetews
2018-08-31 16:45:09 +02:00
parent d52a04fba1
commit 4f7cd8f1b3
177 changed files with 1905 additions and 1498 deletions

View File

@@ -26,31 +26,36 @@ abstract class Smarty_Internal_TemplateCompilerBase
*
* @var array
*/
static $_tag_objects = array();
public static $_tag_objects = array();
/**
* counter for prefix variable number
*
* @var int
*/
public static $prefixVariableNumber = 0;
/**
* Smarty object
*
* @var Smarty
*/
public $smarty = null;
/**
* Parser object
*
* @var Smarty_Internal_Templateparser
*/
public $parser = null;
/**
* hash for nocache sections
*
* @var mixed
*/
public $nocache_hash = null;
/**
* suppress generation of nocache code
*
@@ -71,174 +76,203 @@ abstract class Smarty_Internal_TemplateCompilerBase
* @var array
*/
public $_tag_stack = array();
/**
* tag stack count
*
* @var array
*/
public $_tag_stack_count = array();
/**
* Plugins used by template
*
* @var array
*/
public $required_plugins = array('compiled' => array(), 'nocache' => array());
/**
* Required plugins stack
*
* @var array
*/
public $required_plugins_stack = array();
/**
* current template
*
* @var Smarty_Internal_Template
*/
public $template = null;
/**
* merged included sub template data
*
* @var array
*/
public $mergedSubTemplatesData = array();
/**
* merged sub template code
*
* @var array
*/
public $mergedSubTemplatesCode = array();
/**
* collected template properties during compilation
*
* @var array
*/
public $templateProperties = array();
/**
* source line offset for error messages
*
* @var int
*/
public $trace_line_offset = 0;
/**
* trace uid
*
* @var string
*/
public $trace_uid = '';
/**
* trace file path
*
* @var string
*/
public $trace_filepath = '';
/**
* stack for tracing file and line of nested {block} tags
*
* @var array
*/
public $trace_stack = array();
/**
* plugins loaded by default plugin handler
*
* @var array
*/
public $default_handler_plugins = array();
/**
* saved preprocessed modifier list
*
* @var mixed
*/
public $default_modifier_list = null;
/**
* force compilation of complete template as nocache
*
* @var boolean
*/
public $forceNocache = false;
/**
* flag if compiled template file shall we written
*
* @var bool
*/
public $write_compiled_code = true;
/**
* Template functions
*
* @var array
*/
public $tpl_function = array();
/**
* called sub functions from template function
*
* @var array
*/
public $called_functions = array();
/**
* compiled template or block function code
*
* @var string
*/
public $blockOrFunctionCode = '';
/**
* php_handling setting either from Smarty or security
*
* @var int
*/
public $php_handling = 0;
/**
* flags for used modifier plugins
*
* @var array
*/
public $modifier_plugins = array();
/**
* type of already compiled modifier
*
* @var array
*/
public $known_modifier_type = array();
/**
* parent compiler object for merged subtemplates and template functions
*
* @var Smarty_Internal_TemplateCompilerBase
*/
public $parent_compiler = null;
/**
* Flag true when compiling nocache section
*
* @var bool
*/
public $nocache = false;
/**
* Flag true when tag is compiled as nocache
*
* @var bool
*/
public $tag_nocache = false;
/**
* Compiled tag prefix code
*
* @var array
*/
public $prefix_code = array();
/**
* used prefix variables by current compiled tag
*
* @var array
*/
public $usedPrefixVariables = array();
/**
* Prefix code stack
*
* @var array
*/
public $prefixCodeStack = array();
/**
* Tag has compiled code
*
* @var bool
*/
public $has_code = false;
/**
* A variable string was compiled
*
@@ -252,63 +286,75 @@ abstract class Smarty_Internal_TemplateCompilerBase
* @var array
*/
public $variable_filter_stack = array();
/**
* variable filters for {setfilter} {/setfilter}
*
* @var array
*/
public $variable_filters = array();
/**
* Nesting count of looping tags like {foreach}, {for}, {section}, {while}
*
* @var int
*/
public $loopNesting = 0;
/**
* Strip preg pattern
*
* @var string
*/
public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
/**
* plugin search order
*
* @var array
*/
public $plugin_search_order = array('function',
'block',
'compiler',
'class');
public $plugin_search_order = array(
'function',
'block',
'compiler',
'class'
);
/**
* General storage area for tag compiler plugins
*
* @var array
*/
public $_cache = array();
/**
* Lexer preg pattern for left delimiter
*
* @var string
*/
private $ldelPreg = '[{]';
/**
* Lexer preg pattern for right delimiter
*
* @var string
*/
private $rdelPreg = '[}]';
/**
* Length of right delimiter
*
* @var int
*/
private $rdelLength = 0;
/**
* Length of left delimiter
*
* @var int
*/
private $ldelLength = 0;
/**
* Lexer preg pattern for user literals
*
@@ -325,8 +371,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
{
$this->smarty = $smarty;
$this->nocache_hash = str_replace(
array('.',
','),
array(
'.',
','
),
'_',
uniqid(mt_rand(), true)
);
@@ -335,14 +383,15 @@ abstract class Smarty_Internal_TemplateCompilerBase
/**
* Method to compile a Smarty template
*
* @param Smarty_Internal_Template $template template object to compile
* @param bool $nocache true is shall be compiled in nocache mode
* @param Smarty_Internal_Template $template template object to compile
* @param bool $nocache true is shall be compiled in nocache mode
* @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler
*
* @return bool true if compiling succeeded, false if it failed
* @throws \Exception
*/
public function compileTemplate(Smarty_Internal_Template $template,
public function compileTemplate(
Smarty_Internal_Template $template,
$nocache = null,
Smarty_Internal_TemplateCompilerBase $parent_compiler = null
) {
@@ -355,7 +404,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$parent_compiler
),
$this->postFilter($this->blockOrFunctionCode) .
join('', $this->mergedSubTemplatesCode),
join('', $this->mergedSubTemplatesCode),
false,
$this
);
@@ -366,13 +415,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
* Compile template source and run optional post filter
*
* @param \Smarty_Internal_Template $template
* @param null|bool $nocache flag if template must be compiled in nocache mode
* @param null|bool $nocache flag if template must be compiled in nocache mode
* @param \Smarty_Internal_TemplateCompilerBase $parent_compiler
*
* @return string
* @throws \Exception
*/
public function compileTemplateSource(Smarty_Internal_Template $template,
public function compileTemplateSource(
Smarty_Internal_Template $template,
$nocache = null,
Smarty_Internal_TemplateCompilerBase $parent_compiler = null
) {
@@ -411,9 +461,11 @@ abstract class Smarty_Internal_TemplateCompilerBase
// add file dependency
if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) {
$this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] =
array($this->template->source->filepath,
$this->template->source->getTimeStamp(),
$this->template->source->type,);
array(
$this->template->source->filepath,
$this->template->source->getTimeStamp(),
$this->template->source->type,
);
}
$this->smarty->_current_file = $this->template->source->filepath;
// get template source
@@ -430,8 +482,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
if (!empty($this->required_plugins[ 'compiled' ]) || !empty($this->required_plugins[ 'nocache' ])) {
$_compiled_code = '<?php ' . $this->compileRequiredPlugins() . "?>\n" . $_compiled_code;
}
}
catch (Exception $e) {
} catch (Exception $e) {
if ($this->smarty->debugging) {
$this->smarty->_debug->end_compile($this->template);
}
@@ -461,7 +512,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function postFilter($code)
{
// run post filter if on code
if (!empty($code)
if (!empty($code)
&& (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ]))
) {
return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template);
@@ -481,7 +532,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function preFilter($_content)
{
// run pre filter if required
if ($_content !== ''
if ($_content !== ''
&& ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ])))
) {
return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template);
@@ -529,13 +580,13 @@ abstract class Smarty_Internal_TemplateCompilerBase
// not a variable variable
$var = trim($variable, '\'');
$this->tag_nocache = $this->tag_nocache |
$this->template->ext->getTemplateVars->_getVariable(
$this->template,
$var,
null,
true,
false
)->nocache;
$this->template->ext->getTemplateVars->_getVariable(
$this->template,
$var,
null,
true,
false
)->nocache;
// todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache;
}
return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
@@ -566,7 +617,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
public function compilePHPFunctionCall($name, $parameter)
{
if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) {
if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0
if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0
|| strcasecmp($name, 'array') === 0 || is_callable($name)
) {
$func_name = strtolower($name);
@@ -588,12 +639,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
return $name . '(' . $isset_par . ')';
} elseif (in_array(
$func_name,
array('empty',
'reset',
'current',
'end',
'prev',
'next')
array(
'empty',
'reset',
'current',
'end',
'prev',
'next'
)
)
) {
if (count($parameter) !== 1) {
@@ -629,7 +682,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
*/
public function processText($text)
{
if ((string) $text != '') {
if ((string)$text != '') {
$store = array();
$_store = 0;
if ($this->parser->strip) {
@@ -638,7 +691,9 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_offset = 0;
if (preg_match_all(
'#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is',
$text, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER
$text,
$matches,
PREG_OFFSET_CAPTURE | PREG_SET_ORDER
)
) {
foreach ($matches as $match) {
@@ -646,24 +701,26 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_length = strlen($match[ 0 ][ 0 ]);
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@';
$text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length);
$_offset += $_length - strlen($replace);
$_store ++;
$_store++;
}
}
$expressions = array(// replace multiple spaces between tags by a single space
'#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
'#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2',
// remove newline between tags
'#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
'#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2',
// remove multiple spaces between attributes (but not in attribute values!)
'#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5',
'#>[\040\011]+$#Ss' => '> ', '#>[\040\011]*[\n]\s*$#Ss' => '>',
$this->stripRegEx => '',);
'#>[\040\011]+$#Ss' => '> ',
'#>[\040\011]*[\n]\s*$#Ss' => '>',
$this->stripRegEx => '',
);
$text = preg_replace(array_keys($expressions), array_values($expressions), $text);
$_offset = 0;
if (preg_match_all(
'#@!@SMARTY:([0-9]+):SMARTY@!@#is', $text, $matches,
'#@!@SMARTY:([0-9]+):SMARTY@!@#is',
$text,
$matches,
PREG_OFFSET_CAPTURE | PREG_SET_ORDER
)
) {
@@ -671,9 +728,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_length = strlen($match[ 0 ][ 0 ]);
$replace = $store[ $match[ 1 ][ 0 ] ];
$text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length);
$_offset += strlen($replace) - $_length;
$_store ++;
$_store++;
}
}
} else {
@@ -726,7 +782,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$_tag = explode('_', $tag);
$_tag = array_map('ucfirst', $_tag);
$class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag);
if (class_exists($class_name)
if (class_exists($class_name)
&& (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))
) {
self::$_tag_objects[ $tag ] = new $class_name;
@@ -740,8 +796,8 @@ abstract class Smarty_Internal_TemplateCompilerBase
/**
* Check for plugins and return function name
*
* @param $plugin_name
* @param string $plugin_type type of plugin
* @param $plugin_name
* @param string $plugin_type type of plugin
*
* @return string call name of function
* @throws \SmartyException
@@ -819,12 +875,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
$cacheable = true;
$result = call_user_func_array(
$this->smarty->default_plugin_handler_func,
array($tag,
$plugin_type,
$this->template,
&$callback,
&$script,
&$cacheable,)
array(
$tag,
$plugin_type,
$this->template,
&$callback,
&$script,
&$cacheable,
)
);
if ($result) {
$this->tag_nocache = $this->tag_nocache || !$cacheable;
@@ -847,9 +905,11 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
}
if (is_callable($callback)) {
$this->default_handler_plugins[ $plugin_type ][ $tag ] = array($callback,
true,
array());
$this->default_handler_plugins[ $plugin_type ][ $tag ] = array(
$callback,
true,
array()
);
return true;
} else {
$this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable");
@@ -893,13 +953,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
// If the template is not evaluated and we have a nocache section and or a nocache tag
if ($is_code && !empty($content)) {
// generate replacement code
if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching
if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching
&& !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache)
) {
$this->template->compiled->has_nocache_code = true;
$_output = addcslashes($content, '\'\\');
$_output = str_replace('^#^', '\'', $_output);
$_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
$_output =
"<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
// make sure we include modifier plugins for nocache code
foreach ($this->modifier_plugins as $plugin_name => $dummy) {
if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) {
@@ -968,7 +1029,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
/**
* @param array $_attr tag attributes
* @param array $_attr tag attributes
* @param array $validScopes
*
* @return int|string
@@ -1035,19 +1096,21 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
if (in_array(
$this->template->source->type,
array('eval',
'string')
array(
'eval',
'string'
)
)
) {
$templateName = $this->template->source->type . ':' . trim(
preg_replace(
'![\t\r\n]+!',
' ',
strlen($lex->data) > 40 ?
substr($lex->data, 0, 40) .
'...' : $lex->data
)
);
preg_replace(
'![\t\r\n]+!',
' ',
strlen($lex->data) > 40 ?
substr($lex->data, 0, 40) .
'...' : $lex->data
)
);
} else {
$templateName = $this->template->source->type . ':' . $this->template->source->filepath;
}
@@ -1131,9 +1194,11 @@ abstract class Smarty_Internal_TemplateCompilerBase
{
return str_replace(
array('SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'),
array($this->ldelPreg, $this->literalPreg, $this->rdelPreg,
$this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
$this->smarty->getAutoLiteral() ? '' : '\\s*'),
array(
$this->ldelPreg, $this->literalPreg, $this->rdelPreg,
$this->smarty->getAutoLiteral() ? '{1,}' : '{9}',
$this->smarty->getAutoLiteral() ? '' : '\\s*'
),
$lexerPreg
);
}
@@ -1322,7 +1387,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
*
* @param bool $init if true init required plugins
*/
public function saveRequiredPlugins($init=false)
public function saveRequiredPlugins($init = false)
{
$this->required_plugins_stack[] = $this->required_plugins;
if ($init) {
@@ -1379,7 +1444,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
/**
* method to compile a Smarty template
*
* @param mixed $_content template source
* @param mixed $_content template source
* @param bool $isTemplateSource
*
* @return bool true if compiling succeeded, false if it failed
@@ -1405,8 +1470,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
$this->has_code = true;
// log tag/attributes
if (isset($this->smarty->_cache[ 'get_used_tags' ])) {
$this->template->_cache[ 'used_tags' ][] = array($tag,
$args);
$this->template->_cache[ 'used_tags' ][] = array(
$tag,
$args
);
}
// check nocache option flag
foreach ($args as $arg) {
@@ -1424,9 +1491,9 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
// compile the smarty tag (required compile classes to compile the tag are auto loaded)
if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
if (isset($this->parent_compiler->tpl_function[ $tag ])
|| (isset($this->template->smarty->ext->_tplFunction)
&& $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)
if (isset($this->parent_compiler->tpl_function[ $tag ])
|| (isset($this->template->smarty->ext->_tplFunction)
&& $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false)
) {
// template defined by {template} tag
$args[ '_attr' ][ 'name' ] = "'{$tag}'";
@@ -1457,9 +1524,9 @@ abstract class Smarty_Internal_TemplateCompilerBase
// check if tag is a registered object
if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) {
$method = $parameter[ 'object_method' ];
if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])
&& (empty($this->smarty->registered_objects[ $tag ][ 1 ])
|| in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])
&& (empty($this->smarty->registered_objects[ $tag ][ 1 ])
|| in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ]))
) {
return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
} elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) {
@@ -1474,16 +1541,18 @@ abstract class Smarty_Internal_TemplateCompilerBase
// throw exception
$this->trigger_template_error(
'not allowed method "' . $method . '" in registered object "' .
$tag . '"',
$tag . '"',
null,
true
);
}
}
// check if tag is registered
foreach (array(Smarty::PLUGIN_COMPILER,
Smarty::PLUGIN_FUNCTION,
Smarty::PLUGIN_BLOCK,) as $plugin_type) {
foreach (array(
Smarty::PLUGIN_COMPILER,
Smarty::PLUGIN_FUNCTION,
Smarty::PLUGIN_BLOCK,
) as $plugin_type) {
if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) {
// if compiler function plugin call it now
if ($plugin_type === Smarty::PLUGIN_COMPILER) {
@@ -1500,8 +1569,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
return call_user_func_array(
$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ],
array($new_args,
$this)
array(
$new_args,
$this
)
);
}
// compile registered function or block function
@@ -1517,10 +1588,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
// check plugins from plugins folder
foreach ($this->plugin_search_order as $plugin_type) {
if ($plugin_type === Smarty::PLUGIN_COMPILER
&& $this->smarty->loadPlugin('smarty_compiler_' . $tag)
&& (!isset($this->smarty->security_policy)
|| $this->smarty->security_policy->isTrustedTag($tag, $this))
if ($plugin_type === Smarty::PLUGIN_COMPILER
&& $this->smarty->loadPlugin('smarty_compiler_' . $tag)
&& (!isset($this->smarty->security_policy)
|| $this->smarty->security_policy->isTrustedTag($tag, $this))
) {
$plugin = 'smarty_compiler_' . $tag;
if (is_callable($plugin)) {
@@ -1544,7 +1615,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
throw new SmartyException("Plugin '{$tag}' not callable");
} else {
if ($function = $this->getPlugin($tag, $plugin_type)) {
if (!isset($this->smarty->security_policy)
if (!isset($this->smarty->security_policy)
|| $this->smarty->security_policy->isTrustedTag($tag, $this)
) {
return $this->callTagCompiler(
@@ -1589,8 +1660,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
return call_user_func_array(
$this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ],
array($new_args,
$this)
array(
$new_args,
$this
)
);
} else {
return $this->callTagCompiler(
@@ -1620,14 +1693,14 @@ abstract class Smarty_Internal_TemplateCompilerBase
// throw exception
$this->trigger_template_error(
'not allowed closing tag method "' . $method .
'" in registered object "' . $base_tag . '"',
'" in registered object "' . $base_tag . '"',
null,
true
);
}
}
// registered block tag ?
if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
|| isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ])
) {
return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
@@ -1642,7 +1715,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
// function plugin?
if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) {
if (!isset($this->smarty->security_policy)
if (!isset($this->smarty->security_policy)
|| $this->smarty->security_policy->isTrustedTag($tag, $this)
) {
return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function);
@@ -1657,8 +1730,10 @@ abstract class Smarty_Internal_TemplateCompilerBase
}
return call_user_func_array(
$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ],
array($args,
$this)
array(
$args,
$this
)
);
}
if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {