enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted') as

callback for register_resource()

enabled array(&$obj, 'method') as callback for
$default_template_handler_func
This commit is contained in:
messju
2003-04-28 00:22:41 +00:00
parent 74286b0c51
commit 4dac038066
2 changed files with 40 additions and 16 deletions

4
NEWS
View File

@@ -1,3 +1,7 @@
- enabled array(&$obj. 'source', 'timestamp', 'secure', 'trusted')
as callback for register_resource() (messju);
- enabled array(&$obj, 'method') as callback for
$default_template_handler_func (messju)
- made plugin-names case-insensitive. this affects compiler/block/custom- - made plugin-names case-insensitive. this affects compiler/block/custom-
functions and modifers. (messju) functions and modifers. (messju)
- remove unnecessary close/open tags from compiled templates - remove unnecessary close/open tags from compiled templates

View File

@@ -798,8 +798,22 @@ class Smarty
*/ */
function register_resource($type, $functions) function register_resource($type, $functions)
{ {
$this->_plugins['resource'][$type] = if (sizeof($functions)==4) {
array((array)$functions, false); $this->_plugins['resource'][$type] =
array($functions, false);
} elseif (sizeof($functions)==5 && is_object($functions[0])) {
$this->_plugins['resource'][$type] =
array(array(array(&$functions[0], $functions[1])
,array(&$functions[0], $functions[2])
,array(&$functions[0], $functions[3])
,array(&$functions[0], $functions[4]))
,false);
} else {
$this->trigger_error("malformed function-list for '$type' in register_resource");
}
} }
/** /**
@@ -1338,8 +1352,8 @@ class Smarty
} }
} else { } else {
// resource is not on local file system // resource is not on local file system
$resource_func = $this->_plugins['resource'][$resource_type][0][3]; $_smarty_trusted = call_user_func_array($this->_plugins['resource'][$resource_type][0][3],
$_smarty_trusted = $resource_func($resource_name, $this); array($resource_name, $this));
} }
return $_smarty_trusted; return $_smarty_trusted;
@@ -1373,8 +1387,9 @@ class Smarty
} }
} else { } else {
// resource is not on local file system // resource is not on local file system
$resource_func = $this->_plugins['resource'][$resource_type][0][2]; $_smarty_secure = call_user_func_array(
$_smarty_secure = $resource_func($resource_name, $_smarty_secure, $this); $this->_plugins['resource'][$resource_type][0][2],
array($resource_name, &$_smarty_secure, &$this));
} }
return $_smarty_secure; return $_smarty_secure;
@@ -1593,16 +1608,20 @@ class Smarty
$_return = true; $_return = true;
break; break;
default: default:
// call resource functions to fetch the template source and timestamp // call resource functions to fetch the template source and timestamp
if ($get_source) { if ($get_source) {
$resource_func = $this->_plugins['resource'][$resource_type][0][0]; $_source_return = isset($this->_plugins['resource'][$resource_type]) &&
$_source_return = $resource_func($resource_name, $template_source, $this); call_user_func_array($this->_plugins['resource'][$resource_type][0][0],
array($resource_name, &$template_source, &$this));
} else { } else {
$_source_return = true; $_source_return = true;
} }
$resource_func = $this->_plugins['resource'][$resource_type][0][1];
$_timestamp_return = $resource_func($resource_name, $template_timestamp, $this); $_timestamp_return = isset($this->_plugins['resource'][$resource_type]) &&
call_user_func_array($this->_plugins['resource'][$resource_type][0][1],
array($resource_name, &$template_timestamp, &$this));
$_return = $_source_return && $_timestamp_return; $_return = $_source_return && $_timestamp_return;
break; break;
} }
@@ -1611,11 +1630,12 @@ class Smarty
if (!$_return) { if (!$_return) {
// see if we can get a template with the default template handler // see if we can get a template with the default template handler
if (!empty($this->default_template_handler_func)) { if (!empty($this->default_template_handler_func)) {
if (!function_exists($this->default_template_handler_func)) { if (!$this->_plugin_implementation_exists($this->default_template_handler_func)) {
$this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist."); $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist.");
} else { } else {
$funcname = $this->default_template_handler_func; $_return = call_user_func_array(
$_return = $funcname($resource_type, $resource_name, $template_source, $template_timestamp, $this); $this->default_template_handler_func,
array($resource_type, $resource_name, &$template_source, &$template_timestamp, &$this));
} }
} }
} }
@@ -2523,8 +2543,8 @@ class Smarty
if (isset($plugin)) { if (isset($plugin)) {
if (!$plugin[1] && count($plugin[0])) { if (!$plugin[1] && count($plugin[0])) {
$plugin[1] = true; $plugin[1] = true;
foreach ($plugin[0] as $plugin_func) { foreach ($plugin[0] as $plugin_func) {
if (!function_exists($plugin_func)) { if (!$this->_plugin_implementation_exists($plugin_func)) {
$plugin[1] = false; $plugin[1] = false;
break; break;
} }