X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/098a79f0819ebb89b7d48df4a6b154af4560f68e..9a23a8c0a51b7ec38a96f525484134f3cb85dc7e:/WEB-INF/lib/smarty/sysplugins/smarty_internal_compile_break.php diff --git a/WEB-INF/lib/smarty/sysplugins/smarty_internal_compile_break.php b/WEB-INF/lib/smarty/sysplugins/smarty_internal_compile_break.php new file mode 100644 index 00000000..0c0bee1f --- /dev/null +++ b/WEB-INF/lib/smarty/sysplugins/smarty_internal_compile_break.php @@ -0,0 +1,65 @@ +compiler = $compiler; + $this->smarty = $compiler->smarty; + // check and get attributes + $_attr = $this->_get_attributes($args); + + if ($_attr['nocache'] === true) { + $this->compiler->trigger_template_error('nocache option not allowed', $this->compiler->lex->taglineno); + } + + if (isset($_attr['levels'])) { + if (!is_numeric($_attr['levels'])) { + $this->compiler->trigger_template_error('level attribute must be a numeric constant', $this->compiler->lex->taglineno); + } + $_levels = $_attr['levels']; + } else { + $_levels = 1; + } + $level_count = $_levels; + $stack_count = count($compiler->_tag_stack) - 1; + while ($level_count > 0 && $stack_count >= 0) { + if (in_array($compiler->_tag_stack[$stack_count][0], array('for', 'foreach', 'while', 'section'))) { + $level_count--; + } + $stack_count--; + } + if ($level_count != 0) { + $this->compiler->trigger_template_error("cannot break {$_levels} level(s)", $this->compiler->lex->taglineno); + } + // this tag does not return compiled code + $this->compiler->has_code = true; + return ""; + } +} + +?> \ No newline at end of file