From 51609351f2c4b5082b7e6f0744cd3811c325303f Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 11 Oct 2016 14:01:29 +0200 Subject: * initial template --- .../sysplugins/smarty_internal_compile_capture.php | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 lib/smarty/sysplugins/smarty_internal_compile_capture.php (limited to 'lib/smarty/sysplugins/smarty_internal_compile_capture.php') diff --git a/lib/smarty/sysplugins/smarty_internal_compile_capture.php b/lib/smarty/sysplugins/smarty_internal_compile_capture.php new file mode 100644 index 0000000..9a5071e --- /dev/null +++ b/lib/smarty/sysplugins/smarty_internal_compile_capture.php @@ -0,0 +1,98 @@ +getAttributes($compiler, $args); + + $buffer = isset($_attr['name']) ? $_attr['name'] : "'default'"; + $assign = isset($_attr['assign']) ? $_attr['assign'] : 'null'; + $append = isset($_attr['append']) ? $_attr['append'] : 'null'; + + $compiler->_capture_stack[0][] = array($buffer, $assign, $append, $compiler->nocache); + // maybe nocache because of nocache variables + $compiler->nocache = $compiler->nocache | $compiler->tag_nocache; + $_output = "_capture_stack[0][] = array($buffer, $assign, $append); ob_start(); ?>"; + + return $_output; + } + +} + +/** + * Smarty Internal Plugin Compile Captureclose Class + * + * @package Smarty + * @subpackage Compiler + */ +class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase { + + /** + * Compiles code for the {/capture} tag + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @return string compiled code + */ + public function compile($args, $compiler) + { + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + // must endblock be nocache? + if ($compiler->nocache) { + $compiler->tag_nocache = true; + } + + list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]); + + $_output = "_capture_stack[0]);\n"; + $_output .= "if (!empty(\$_capture_buffer)) {\n"; + $_output .= " if (isset(\$_capture_assign)) \$_smarty_tpl->assign(\$_capture_assign, ob_get_contents());\n"; + $_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n"; + $_output .= " Smarty::\$_smarty_vars['capture'][\$_capture_buffer]=ob_get_clean();\n"; + $_output .= "} else \$_smarty_tpl->capture_error();?>"; + return $_output; + } + +} + +?> \ No newline at end of file -- cgit v1.2.3