1<?php 2/** 3 * Smarty Internal Plugin Templateparser Parse Tree 4 * These are classes to build parse tree in the template parser 5 * 6 * @package Smarty 7 * @subpackage Compiler 8 * @author Thue Kristensen 9 * @author Uwe Tews 10 */ 11 12/** 13 * A complete smarty tag. 14 * 15 * @package Smarty 16 * @subpackage Compiler 17 * @ignore 18 */ 19class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree 20{ 21 /** 22 * Saved block nesting level 23 * 24 * @var int 25 */ 26 public $saved_block_nesting; 27 28 /** 29 * Create parse tree buffer for Smarty tag 30 * 31 * @param \Smarty_Internal_Templateparser $parser parser object 32 * @param string $data content 33 */ 34 public function __construct(Smarty_Internal_Templateparser $parser, $data) 35 { 36 $this->data = $data; 37 $this->saved_block_nesting = $parser->block_nesting_level; 38 } 39 40 /** 41 * Return buffer content 42 * 43 * @param \Smarty_Internal_Templateparser $parser 44 * 45 * @return string content 46 */ 47 public function to_smarty_php(Smarty_Internal_Templateparser $parser) 48 { 49 return $this->data; 50 } 51 52 /** 53 * Return complied code that loads the evaluated output of buffer content into a temporary variable 54 * 55 * @param \Smarty_Internal_Templateparser $parser 56 * 57 * @return string template code 58 */ 59 public function assign_to_var(Smarty_Internal_Templateparser $parser) 60 { 61 $var = $parser->compiler->getNewPrefixVariable(); 62 $tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data); 63 $tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>"); 64 $parser->compiler->prefix_code[] = sprintf('%s', $tmp); 65 return $var; 66 } 67} 68