1<?php 2/** 3 * Smarty Internal Plugin Compile Eval 4 * Compiles the {eval} tag. 5 * 6 * @package Smarty 7 * @subpackage Compiler 8 * @author Uwe Tews 9 */ 10 11/** 12 * Smarty Internal Plugin Compile Eval Class 13 * 14 * @package Smarty 15 * @subpackage Compiler 16 */ 17class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase 18{ 19 /** 20 * Attribute definition: Overwrites base class. 21 * 22 * @var array 23 * @see Smarty_Internal_CompileBase 24 */ 25 public $required_attributes = array('var'); 26 27 /** 28 * Attribute definition: Overwrites base class. 29 * 30 * @var array 31 * @see Smarty_Internal_CompileBase 32 */ 33 public $optional_attributes = array('assign'); 34 35 /** 36 * Attribute definition: Overwrites base class. 37 * 38 * @var array 39 * @see Smarty_Internal_CompileBase 40 */ 41 public $shorttag_order = array('var', 'assign'); 42 43 /** 44 * Compiles code for the {eval} tag 45 * 46 * @param array $args array with attributes from parser 47 * @param object $compiler compiler object 48 * 49 * @return string compiled code 50 */ 51 public function compile($args, $compiler) 52 { 53 // check and get attributes 54 $_attr = $this->getAttributes($compiler, $args); 55 if (isset($_attr[ 'assign' ])) { 56 // output will be stored in a smarty variable instead of being displayed 57 $_assign = $_attr[ 'assign' ]; 58 } 59 // create template object 60 $_output = 61 "\$_template = new {$compiler->smarty->template_class}('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->smarty, \$_smarty_tpl);"; 62 //was there an assign attribute? 63 if (isset($_assign)) { 64 $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());"; 65 } else { 66 $_output .= 'echo $_template->fetch();'; 67 } 68 return "<?php $_output ?>"; 69 } 70} 71