mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-06 11:24:27 +02:00
See changelog.
This commit is contained in:
5
NEWS
5
NEWS
@@ -1,3 +1,8 @@
|
|||||||
|
- made Smarty catch unimplemented modifiers and custom functions and output
|
||||||
|
error messages during compilation instead of failing during run time.
|
||||||
|
(Andrei)
|
||||||
|
- added register_custom_function() and register_modifier() API calls
|
||||||
|
to make registering stuff easier. (Andrei)
|
||||||
- added template results caching capability. (Monte, Andrei)
|
- added template results caching capability. (Monte, Andrei)
|
||||||
- added optional 'options' attribute to html_options custom function
|
- added optional 'options' attribute to html_options custom function
|
||||||
that allows passing associative arrays for values/output. (Andrei)
|
that allows passing associative arrays for values/output. (Andrei)
|
||||||
|
@@ -69,7 +69,7 @@ class Smarty
|
|||||||
// 0 = never expires. default is one hour (3600)
|
// 0 = never expires. default is one hour (3600)
|
||||||
|
|
||||||
|
|
||||||
var $tpl_file_ext = ".tpl"; // template file extentions
|
var $tpl_file_ext = ".tpl"; // template files extention
|
||||||
|
|
||||||
var $allow_php = false; // whether or not to allow embedded php
|
var $allow_php = false; // whether or not to allow embedded php
|
||||||
// in the templates. By default, php tags
|
// in the templates. By default, php tags
|
||||||
@@ -170,6 +170,27 @@ class Smarty
|
|||||||
unset($this->_tpl_vars[$tpl_var]);
|
unset($this->_tpl_vars[$tpl_var]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
Function: register_custom_function
|
||||||
|
Purpose: Registers custom function to be used in templates
|
||||||
|
\*======================================================================*/
|
||||||
|
function register_custom_function($function, $function_impl)
|
||||||
|
{
|
||||||
|
$this->custom_funcs[$function] = $function_impl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
Function: register_modifier
|
||||||
|
Purpose: Registers modifier to be used in templates
|
||||||
|
\*======================================================================*/
|
||||||
|
function register_modifier($modifier, $modifier_impl)
|
||||||
|
{
|
||||||
|
$this->custom_mods[$modifier] = $modifier_impl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*======================================================================*\
|
/*======================================================================*\
|
||||||
Function: clear_cache()
|
Function: clear_cache()
|
||||||
Purpose: clear all cached template files for given template
|
Purpose: clear all cached template files for given template
|
||||||
@@ -491,7 +512,7 @@ class Smarty
|
|||||||
\*======================================================================*/
|
\*======================================================================*/
|
||||||
function _process_cached_inserts($results)
|
function _process_cached_inserts($results)
|
||||||
{
|
{
|
||||||
preg_match_all('!'.$this->_smarty_md5.'{insert_cache (.*)}'.$this->_smarty_md5.'!Uis',
|
preg_match_all('!'.$this->_smarty_md5.'{insert_cache (.*)}'.$this->_smarty_md5.'\n??!Uis',
|
||||||
$results, $match);
|
$results, $match);
|
||||||
list($cached_inserts, $insert_args) = $match;
|
list($cached_inserts, $insert_args) = $match;
|
||||||
|
|
||||||
@@ -499,10 +520,6 @@ class Smarty
|
|||||||
$attrs = $this->_parse_attrs($insert_args[$i], false);
|
$attrs = $this->_parse_attrs($insert_args[$i], false);
|
||||||
$name = $this->_dequote($attrs['name']);
|
$name = $this->_dequote($attrs['name']);
|
||||||
|
|
||||||
if (empty($name)) {
|
|
||||||
$this->_syntax_error("missing insert name");
|
|
||||||
}
|
|
||||||
|
|
||||||
$arg_list = array();
|
$arg_list = array();
|
||||||
foreach ($attrs as $arg_name => $arg_value) {
|
foreach ($attrs as $arg_name => $arg_value) {
|
||||||
if ($arg_name == 'name') continue;
|
if ($arg_name == 'name') continue;
|
||||||
@@ -600,15 +617,21 @@ class Smarty
|
|||||||
return $this->_compile_custom_tag($tag_command, $tag_args);
|
return $this->_compile_custom_tag($tag_command, $tag_args);
|
||||||
} else {
|
} else {
|
||||||
$this->_syntax_error("unknown tag - '$tag_command'", E_USER_WARNING);
|
$this->_syntax_error("unknown tag - '$tag_command'", E_USER_WARNING);
|
||||||
return "";
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _compile_custom_tag($tag_command, $tag_args)
|
function _compile_custom_tag($tag_command, $tag_args)
|
||||||
{
|
{
|
||||||
$attrs = $this->_parse_attrs($tag_args);
|
|
||||||
$function = $this->custom_funcs[$tag_command];
|
$function = $this->custom_funcs[$tag_command];
|
||||||
|
|
||||||
|
if (!function_exists($function)) {
|
||||||
|
$this->_syntax_error("custom function '$tag_command' is not implemented", E_USER_WARNING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
foreach ($attrs as $arg_name => $arg_value) {
|
foreach ($attrs as $arg_name => $arg_value) {
|
||||||
if (is_bool($arg_value))
|
if (is_bool($arg_value))
|
||||||
$arg_value = $arg_value ? 'true' : 'false';
|
$arg_value = $arg_value ? 'true' : 'false';
|
||||||
@@ -1104,6 +1127,11 @@ class Smarty
|
|||||||
if (!isset($mod_func_name))
|
if (!isset($mod_func_name))
|
||||||
$mod_func_name = $modifier_name;
|
$mod_func_name = $modifier_name;
|
||||||
|
|
||||||
|
if (!function_exists($mod_func_name)) {
|
||||||
|
$this->_syntax_error("modifier '$modifier_name' is not implemented", E_USER_WARNING);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$this->_parse_vars_props($modifier_args);
|
$this->_parse_vars_props($modifier_args);
|
||||||
|
|
||||||
if (count($modifier_args) > 0)
|
if (count($modifier_args) > 0)
|
||||||
|
@@ -47,7 +47,8 @@ testing strip tags
|
|||||||
|
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
|
{insert name = foo
|
||||||
|
arg1=5}
|
||||||
|
|
||||||
test: {$now|date_format:"%I:%M %p"}
|
test: {$now|date_format:"%I:%M %p"}
|
||||||
|
|
||||||
{insert name = foo arg1=5}
|
|
||||||
|
|
||||||
|
@@ -69,7 +69,7 @@ class Smarty
|
|||||||
// 0 = never expires. default is one hour (3600)
|
// 0 = never expires. default is one hour (3600)
|
||||||
|
|
||||||
|
|
||||||
var $tpl_file_ext = ".tpl"; // template file extentions
|
var $tpl_file_ext = ".tpl"; // template files extention
|
||||||
|
|
||||||
var $allow_php = false; // whether or not to allow embedded php
|
var $allow_php = false; // whether or not to allow embedded php
|
||||||
// in the templates. By default, php tags
|
// in the templates. By default, php tags
|
||||||
@@ -170,6 +170,27 @@ class Smarty
|
|||||||
unset($this->_tpl_vars[$tpl_var]);
|
unset($this->_tpl_vars[$tpl_var]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
Function: register_custom_function
|
||||||
|
Purpose: Registers custom function to be used in templates
|
||||||
|
\*======================================================================*/
|
||||||
|
function register_custom_function($function, $function_impl)
|
||||||
|
{
|
||||||
|
$this->custom_funcs[$function] = $function_impl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*======================================================================*\
|
||||||
|
Function: register_modifier
|
||||||
|
Purpose: Registers modifier to be used in templates
|
||||||
|
\*======================================================================*/
|
||||||
|
function register_modifier($modifier, $modifier_impl)
|
||||||
|
{
|
||||||
|
$this->custom_mods[$modifier] = $modifier_impl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*======================================================================*\
|
/*======================================================================*\
|
||||||
Function: clear_cache()
|
Function: clear_cache()
|
||||||
Purpose: clear all cached template files for given template
|
Purpose: clear all cached template files for given template
|
||||||
@@ -491,7 +512,7 @@ class Smarty
|
|||||||
\*======================================================================*/
|
\*======================================================================*/
|
||||||
function _process_cached_inserts($results)
|
function _process_cached_inserts($results)
|
||||||
{
|
{
|
||||||
preg_match_all('!'.$this->_smarty_md5.'{insert_cache (.*)}'.$this->_smarty_md5.'!Uis',
|
preg_match_all('!'.$this->_smarty_md5.'{insert_cache (.*)}'.$this->_smarty_md5.'\n??!Uis',
|
||||||
$results, $match);
|
$results, $match);
|
||||||
list($cached_inserts, $insert_args) = $match;
|
list($cached_inserts, $insert_args) = $match;
|
||||||
|
|
||||||
@@ -499,10 +520,6 @@ class Smarty
|
|||||||
$attrs = $this->_parse_attrs($insert_args[$i], false);
|
$attrs = $this->_parse_attrs($insert_args[$i], false);
|
||||||
$name = $this->_dequote($attrs['name']);
|
$name = $this->_dequote($attrs['name']);
|
||||||
|
|
||||||
if (empty($name)) {
|
|
||||||
$this->_syntax_error("missing insert name");
|
|
||||||
}
|
|
||||||
|
|
||||||
$arg_list = array();
|
$arg_list = array();
|
||||||
foreach ($attrs as $arg_name => $arg_value) {
|
foreach ($attrs as $arg_name => $arg_value) {
|
||||||
if ($arg_name == 'name') continue;
|
if ($arg_name == 'name') continue;
|
||||||
@@ -600,15 +617,21 @@ class Smarty
|
|||||||
return $this->_compile_custom_tag($tag_command, $tag_args);
|
return $this->_compile_custom_tag($tag_command, $tag_args);
|
||||||
} else {
|
} else {
|
||||||
$this->_syntax_error("unknown tag - '$tag_command'", E_USER_WARNING);
|
$this->_syntax_error("unknown tag - '$tag_command'", E_USER_WARNING);
|
||||||
return "";
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function _compile_custom_tag($tag_command, $tag_args)
|
function _compile_custom_tag($tag_command, $tag_args)
|
||||||
{
|
{
|
||||||
$attrs = $this->_parse_attrs($tag_args);
|
|
||||||
$function = $this->custom_funcs[$tag_command];
|
$function = $this->custom_funcs[$tag_command];
|
||||||
|
|
||||||
|
if (!function_exists($function)) {
|
||||||
|
$this->_syntax_error("custom function '$tag_command' is not implemented", E_USER_WARNING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$attrs = $this->_parse_attrs($tag_args);
|
||||||
foreach ($attrs as $arg_name => $arg_value) {
|
foreach ($attrs as $arg_name => $arg_value) {
|
||||||
if (is_bool($arg_value))
|
if (is_bool($arg_value))
|
||||||
$arg_value = $arg_value ? 'true' : 'false';
|
$arg_value = $arg_value ? 'true' : 'false';
|
||||||
@@ -1104,6 +1127,11 @@ class Smarty
|
|||||||
if (!isset($mod_func_name))
|
if (!isset($mod_func_name))
|
||||||
$mod_func_name = $modifier_name;
|
$mod_func_name = $modifier_name;
|
||||||
|
|
||||||
|
if (!function_exists($mod_func_name)) {
|
||||||
|
$this->_syntax_error("modifier '$modifier_name' is not implemented", E_USER_WARNING);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$this->_parse_vars_props($modifier_args);
|
$this->_parse_vars_props($modifier_args);
|
||||||
|
|
||||||
if (count($modifier_args) > 0)
|
if (count($modifier_args) > 0)
|
||||||
|
@@ -47,7 +47,8 @@ testing strip tags
|
|||||||
|
|
||||||
</PRE>
|
</PRE>
|
||||||
|
|
||||||
|
{insert name = foo
|
||||||
|
arg1=5}
|
||||||
|
|
||||||
test: {$now|date_format:"%I:%M %p"}
|
test: {$now|date_format:"%I:%M %p"}
|
||||||
|
|
||||||
{insert name = foo arg1=5}
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user