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' ]); } // method or property ? if (method_exists($compiler->smarty->registered_objects[ $tag ][ 0 ], $method)) { // 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})"; } } else { // object property $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}"; } if (empty($_assign)) { // This tag does create output $compiler->has_output = true; $output = "\n"; } else { $output = "assign({$_assign},{$return});?>\n"; } return $output; } }