diff options
author | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
---|---|---|
committer | redmatrix <redmatrix@redmatrix.me> | 2015-12-06 14:22:55 -0800 |
commit | a88ec1b1af954a447a666d3ff66b1d1df0a645db (patch) | |
tree | 7ccfe6a03923ad118910202e21a605e13127192c /library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php | |
parent | 553b3a5c6c2ba6b93ad1193ec044ee92cf7690aa (diff) | |
parent | a6cb25020bb5200cc3c00ecc941ddb751644fbcc (diff) | |
download | volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.gz volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.tar.bz2 volse-hubzilla-a88ec1b1af954a447a666d3ff66b1d1df0a645db.zip |
Merge https://github.com/redmatrix/hubzilla into pending_merge
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php index 4c6585543..2ebde1661 100644 --- a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php +++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php @@ -24,6 +24,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase * @see Smarty_Internal_CompileBase */ public $required_attributes = array('name'); + /** * Attribute definition: Overwrites base class. * @@ -31,6 +32,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase * @see Smarty_Internal_CompileBase */ public $shorttag_order = array('name'); + /** * Attribute definition: Overwrites base class. * @@ -42,17 +44,21 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase /** * Compiles code for the {insert} tag * - * @param array $args array with attributes from parser - * @param object $compiler compiler object + * @param array $args array with attributes from parser + * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object * * @return string compiled code + * @throws \SmartyCompilerException */ - public function compile($args, $compiler) + public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) { // check and get attributes $_attr = $this->getAttributes($compiler, $args); - // never compile as nocache code - $compiler->suppressNocacheProcessing = true; + $nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache); + if (!$nocacheParam) { + // do not compile as nocache code + $compiler->suppressNocacheProcessing = true; + } $compiler->tag_nocache = true; $_smarty_tpl = $compiler->template; $_name = null; @@ -60,19 +66,24 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase $_output = '<?php '; // save possible attributes - eval('$_name = ' . $_attr['name'] . ';'); + eval('$_name = @' . $_attr['name'] . ';'); if (isset($_attr['assign'])) { // output will be stored in a smarty variable instead of being displayed $_assign = $_attr['assign']; // create variable to make sure that the compiler knows about its nocache status - $compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true); + $var = trim($_attr['assign'], "'"); + if (isset($compiler->template->tpl_vars[$var])) { + $compiler->template->tpl_vars[$var]->nocache = true; + } else { + $compiler->template->tpl_vars[$var] = new Smarty_Variable(null, true); + } } if (isset($_attr['script'])) { // script which must be included $_function = "smarty_insert_{$_name}"; $_smarty_tpl = $compiler->template; $_filepath = false; - eval('$_script = ' . $_attr['script'] . ';'); + eval('$_script = @' . $_attr['script'] . ';'); if (!isset($compiler->smarty->security_policy) && file_exists($_script)) { $_filepath = $_script; } else { @@ -92,13 +103,13 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase } } if ($_filepath == false) { - $compiler->trigger_template_error("{insert} missing script file '{$_script}'", $compiler->lex->taglineno); + $compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true); } // code for script file loading $_output .= "require_once '{$_filepath}' ;"; require_once $_filepath; if (!is_callable($_function)) { - $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", $compiler->lex->taglineno); + $compiler->trigger_template_error(" {insert} function '{$_function}' is not callable in script file '{$_script}'", null, true); } } else { $_filepath = 'null'; @@ -107,7 +118,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase if (!is_callable($_function)) { // try plugin if (!$_function = $compiler->getPlugin($_name, 'insert')) { - $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", $compiler->lex->taglineno); + $compiler->trigger_template_error("{insert} no function or plugin found for '{$_name}'", null, true); } } } @@ -121,14 +132,14 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase $_params = 'array(' . implode(", ", $_paramsArray) . ')'; // call insert if (isset($_assign)) { - if ($_smarty_tpl->caching) { + if ($_smarty_tpl->caching && !$nocacheParam) { $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>"; } else { $_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>"; } } else { $compiler->has_output = true; - if ($_smarty_tpl->caching) { + if ($_smarty_tpl->caching && !$nocacheParam) { $_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>"; } else { $_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>"; |