mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-06 19:34:27 +02:00
Added the ability to (un)register multiple filters of the same type with the same method name but different class name. Before it was not possible due to the fact that only the method name was used to distinguish between different filters of the same type. This does however not allow (same as before) to register multiple filters of the same type with the same method and class name (i.e. different instances of the same class).
This commit is contained in:
6
NEWS
6
NEWS
@@ -1,5 +1,11 @@
|
||||
- fix when (un)registering filters with the same method name but different class
|
||||
name (danilo)
|
||||
- fix calling registered objects' methods with an empty argument list
|
||||
(marcello, messju)
|
||||
|
||||
Version 2.6.18 (Mar 7th, 2007)
|
||||
------------------------------
|
||||
|
||||
- fix html_select_date separator when parts are missing (hayk,
|
||||
monte)
|
||||
- fix broken detection of non-cached blocks introduced in 2.6.17
|
||||
|
@@ -838,69 +838,66 @@ class Smarty
|
||||
* Registers a prefilter function to apply
|
||||
* to a template before compiling
|
||||
*
|
||||
* @param string $function name of PHP function to register
|
||||
* @param callback $function
|
||||
*/
|
||||
function register_prefilter($function)
|
||||
{
|
||||
$_name = (is_array($function)) ? $function[1] : $function;
|
||||
$this->_plugins['prefilter'][$_name]
|
||||
$this->_plugins['prefilter'][$this->_get_filter_name($function)]
|
||||
= array($function, null, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters a prefilter function
|
||||
*
|
||||
* @param string $function name of PHP function
|
||||
* @param callback $function
|
||||
*/
|
||||
function unregister_prefilter($function)
|
||||
{
|
||||
unset($this->_plugins['prefilter'][$function]);
|
||||
unset($this->_plugins['prefilter'][$this->_get_filter_name($function)]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a postfilter function to apply
|
||||
* to a compiled template after compilation
|
||||
*
|
||||
* @param string $function name of PHP function to register
|
||||
* @param callback $function
|
||||
*/
|
||||
function register_postfilter($function)
|
||||
{
|
||||
$_name = (is_array($function)) ? $function[1] : $function;
|
||||
$this->_plugins['postfilter'][$_name]
|
||||
$this->_plugins['postfilter'][$this->_get_filter_name($function)]
|
||||
= array($function, null, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters a postfilter function
|
||||
*
|
||||
* @param string $function name of PHP function
|
||||
* @param callback $function
|
||||
*/
|
||||
function unregister_postfilter($function)
|
||||
{
|
||||
unset($this->_plugins['postfilter'][$function]);
|
||||
unset($this->_plugins['postfilter'][$this->_get_filter_name($function)]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an output filter function to apply
|
||||
* to a template output
|
||||
*
|
||||
* @param string $function name of PHP function
|
||||
* @param callback $function
|
||||
*/
|
||||
function register_outputfilter($function)
|
||||
{
|
||||
$_name = (is_array($function)) ? $function[1] : $function;
|
||||
$this->_plugins['outputfilter'][$_name]
|
||||
$this->_plugins['outputfilter'][$this->_get_filter_name($function)]
|
||||
= array($function, null, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters an outputfilter function
|
||||
*
|
||||
* @param string $function name of PHP function
|
||||
* @param callback $function
|
||||
*/
|
||||
function unregister_outputfilter($function)
|
||||
{
|
||||
unset($this->_plugins['outputfilter'][$function]);
|
||||
unset($this->_plugins['outputfilter'][$this->_get_filter_name($function)]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1935,6 +1932,25 @@ class Smarty
|
||||
{
|
||||
return eval($code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the filter name from the given callback
|
||||
*
|
||||
* @param callback $function
|
||||
* @return string
|
||||
*/
|
||||
function _get_filter_name($function)
|
||||
{
|
||||
if (is_array($function)) {
|
||||
$_class_name = (is_object($function[0]) ?
|
||||
get_class($function[0]) : $function[0]);
|
||||
return $_class_name . '_' . $function[1];
|
||||
}
|
||||
else {
|
||||
return $function;
|
||||
}
|
||||
}
|
||||
|
||||
/**#@-*/
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user