1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- /**
- * Smarty Internal Plugin Compile Eval
- * Compiles the {eval} tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
- /**
- * Smarty Internal Plugin Compile Eval Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
- class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
- {
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $required_attributes = array('var');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('assign');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('var', 'assign');
-
- /**
- * Compiles code for the {eval} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- *
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- $this->required_attributes = array('var');
- $this->optional_attributes = array('assign');
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of being displayed
- $_assign = $_attr['assign'];
- }
-
- // create template object
- $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr['var'] . ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
- //was there an assign attribute?
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
- } else {
- $_output .= "echo \$_template->fetch();";
- }
-
- return "<?php $_output ?>";
- }
- }
|