server/onyx/modules/templates/smarty/sysplugins/smarty_internal_compile_eval.php

72 lines
1.9 KiB
PHP
Raw Normal View History

2013-10-09 13:40:23 +00:00
<?php
/**
* Smarty Internal Plugin Compile Eval
* Compiles the {eval} tag.
*
2015-01-14 10:28:47 +00:00
* @package Smarty
2013-10-09 13:40:23 +00:00
* @subpackage Compiler
2015-01-14 10:28:47 +00:00
* @author Uwe Tews
2013-10-09 13:40:23 +00:00
*/
/**
* Smarty Internal Plugin Compile Eval Class
*
2015-01-14 10:28:47 +00:00
* @package Smarty
2013-10-09 13:40:23 +00:00
* @subpackage Compiler
*/
2013-10-09 17:08:38 +00:00
class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
{
2013-10-09 13:40:23 +00:00
/**
* 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
*/
2015-01-14 10:28:47 +00:00
public $shorttag_order = array('var', 'assign');
2013-10-09 13:40:23 +00:00
/**
* Compiles code for the {eval} tag
*
2013-10-09 17:08:38 +00:00
* @param array $args array with attributes from parser
* @param object $compiler compiler object
2015-01-14 10:28:47 +00:00
*
2013-10-09 13:40:23 +00:00
* @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'])) {
2015-01-14 10:28:47 +00:00
// output will be stored in a smarty variable instead of being displayed
2013-10-09 13:40:23 +00:00
$_assign = $_attr['assign'];
}
// create template object
2015-01-14 10:28:47 +00:00
$_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr['var'] . ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
2013-10-09 13:40:23 +00:00
//was there an assign attribute?
if (isset($_assign)) {
$_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
} else {
$_output .= "echo \$_template->fetch();";
}
2013-10-09 17:08:38 +00:00
2013-10-09 13:40:23 +00:00
return "<?php $_output ?>";
}
}