| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | <?php/** * Smarty Internal Plugin Compile Object Funtion * * Compiles code for registered objects as function * * @package Smarty * @subpackage Compiler * @author Uwe Tews *//** * Smarty Internal Plugin Compile Object Function Class * * @package Smarty * @subpackage Compiler */class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase {    /**     * Attribute definition: Overwrites base class.     *     * @var array     * @see Smarty_Internal_CompileBase     */    public $optional_attributes = array('_any');    /**     * Compiles code for the execution of function plugin     *     * @param array  $args      array with attributes from parser     * @param object $compiler  compiler object     * @param array  $parameter array with compilation parameter     * @param string $tag       name of function     * @param string $method    name of method to call     * @return string compiled code     */    public function compile($args, $compiler, $parameter, $tag, $method)    {        // check and get attributes        $_attr = $this->getAttributes($compiler, $args);        if ($_attr['nocache'] === true) {            $compiler->tag_nocache = true;        }        unset($_attr['nocache']);        $_assign = null;        if (isset($_attr['assign'])) {            $_assign = $_attr['assign'];            unset($_attr['assign']);        }        // convert attributes into parameter array string        if ($compiler->smarty->registered_objects[$tag][2]) {            $_paramsArray = array();            foreach ($_attr as $_key => $_value) {                if (is_int($_key)) {                    $_paramsArray[] = "$_key=>$_value";                } else {                    $_paramsArray[] = "'$_key'=>$_value";                }            }            $_params = 'array(' . implode(",", $_paramsArray) . ')';            $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";        } else {            $_params = implode(",", $_attr);            $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";        }        if (empty($_assign)) {            // This tag does create output            $compiler->has_output = true;            $output = "<?php echo {$return};?>\n";        } else {            $output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";        }        return $output;    }}?>
 |