summaryrefslogtreecommitdiff
path: root/lib/smarty/sysplugins/smarty_internal_compile_capture.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/smarty/sysplugins/smarty_internal_compile_capture.php')
-rw-r--r--lib/smarty/sysplugins/smarty_internal_compile_capture.php85
1 files changed, 46 insertions, 39 deletions
diff --git a/lib/smarty/sysplugins/smarty_internal_compile_capture.php b/lib/smarty/sysplugins/smarty_internal_compile_capture.php
index 9a5071e..a4ffbc9 100644
--- a/lib/smarty/sysplugins/smarty_internal_compile_capture.php
+++ b/lib/smarty/sysplugins/smarty_internal_compile_capture.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Capture
- *
* Compiles the {capture} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Capture Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -24,6 +23,7 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
* @see Smarty_Internal_CompileBase
*/
public $shorttag_order = array('name');
+
/**
* Attribute definition: Overwrites base class.
*
@@ -33,66 +33,73 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
public $optional_attributes = array('name', 'assign', 'append');
/**
+ * Compiles code for the {$smarty.capture.xxx}
+ *
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public static function compileSpecialVariable(
+ $args,
+ Smarty_Internal_TemplateCompilerBase $compiler,
+ $parameter = null
+ ) {
+ return '$_smarty_tpl->smarty->ext->_capture->getBuffer($_smarty_tpl' .
+ (isset($parameter[ 1 ]) ? ", {$parameter[ 1 ]})" : ')');
+ }
+
+ /**
* Compiles code for the {capture} 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
+ * @param null $parameter
+ *
* @return string compiled code
*/
- public function compile($args, $compiler)
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null)
{
// check and get attributes
- $_attr = $this->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);
+ $_attr = $this->getAttributes($compiler, $args, $parameter, 'capture');
+ $buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'";
+ $assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null';
+ $append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null';
+ $compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache);
// maybe nocache because of nocache variables
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- $_output = "<?php \$_smarty_tpl->_capture_stack[0][] = array($buffer, $assign, $append); ob_start(); ?>";
-
+ $_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>";
return $_output;
}
-
}
/**
* Smarty Internal Plugin Compile Captureclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase {
-
+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
+ * @param array $args array with attributes from parser
+ * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object
+ * @param null $parameter
+ *
* @return string compiled code
*/
- public function compile($args, $compiler)
+ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter)
{
// check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
+ $_attr = $this->getAttributes($compiler, $args, $parameter, '/capture');
// must endblock be nocache?
if ($compiler->nocache) {
$compiler->tag_nocache = true;
}
-
- list($buffer, $assign, $append, $compiler->nocache) = array_pop($compiler->_capture_stack[0]);
-
- $_output = "<?php list(\$_capture_buffer, \$_capture_assign, \$_capture_append) = array_pop(\$_smarty_tpl->_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;
+ list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]);
+ return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>";
}
-
}
-
-?> \ No newline at end of file