From 8863159339b73b7abd7d3f148dc0ad862994be07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs?= Date: Thu, 3 Jan 2019 16:04:52 -0500 Subject: first commit --- .../smarty_internal_compile_continue.php | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 smarty/libs/sysplugins/smarty_internal_compile_continue.php (limited to 'smarty/libs/sysplugins/smarty_internal_compile_continue.php') diff --git a/smarty/libs/sysplugins/smarty_internal_compile_continue.php b/smarty/libs/sysplugins/smarty_internal_compile_continue.php new file mode 100644 index 0000000..ac41f41 --- /dev/null +++ b/smarty/libs/sysplugins/smarty_internal_compile_continue.php @@ -0,0 +1,77 @@ + true, 'foreach' => true, 'while' => true, 'section' => true); + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + + if ($_attr[ 'nocache' ] === true) { + $compiler->trigger_template_error('nocache option not allowed', null, true); + } + + if (isset($_attr[ 'levels' ])) { + if (!is_numeric($_attr[ 'levels' ])) { + $compiler->trigger_template_error('level attribute must be a numeric constant', null, true); + } + $_levels = $_attr[ 'levels' ]; + } else { + $_levels = 1; + } + $level_count = $_levels; + $stack_count = count($compiler->_tag_stack) - 1; + while ($level_count > 0 && $stack_count >= 0) { + if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) { + $level_count --; + } + $stack_count --; + } + if ($level_count != 0) { + $compiler->trigger_template_error("cannot continue {$_levels} level(s)", null, true); + } + + return ""; + } +} -- cgit v1.2.3