You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.1 KiB
89 lines
2.1 KiB
<?php
|
|
|
|
/**
|
|
* Smarty Internal Plugin Filter
|
|
*
|
|
* External Smarty filter methods
|
|
*
|
|
* @package Smarty
|
|
* @author Uwe Tews
|
|
*/
|
|
|
|
/**
|
|
* Class for filter methods
|
|
*/
|
|
class Smarty_Internal_Filter {
|
|
|
|
function __construct($smarty)
|
|
{
|
|
$this->smarty = $smarty;
|
|
}
|
|
/**
|
|
* Registers a filter function
|
|
*
|
|
* @param string $type filter type
|
|
* @param callback $callback
|
|
*/
|
|
public function registerFilter($type, $callback)
|
|
{
|
|
$this->smarty->registered_filters[$type][$this->_get_filter_name($callback)] = $callback;
|
|
}
|
|
|
|
/**
|
|
* Unregisters a filter function
|
|
*
|
|
* @param string $type filter type
|
|
* @param callback $callback
|
|
*/
|
|
public function unregisterFilter($type, $callback)
|
|
{
|
|
$name = $this->_get_filter_name($callback);
|
|
if(isset($this->smarty->registered_filters[$type][$name])) {
|
|
unset($this->smarty->registered_filters[$type][$name]);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Return internal filter name
|
|
*
|
|
* @param callback $function_name
|
|
*/
|
|
public function _get_filter_name($function_name)
|
|
{
|
|
if (is_array($function_name)) {
|
|
$_class_name = (is_object($function_name[0]) ?
|
|
get_class($function_name[0]) : $function_name[0]);
|
|
return $_class_name . '_' . $function_name[1];
|
|
} else {
|
|
return $function_name;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* load a filter of specified type and name
|
|
*
|
|
* @param string $type filter type
|
|
* @param string $name filter name
|
|
* @return bool
|
|
*/
|
|
function loadFilter($type, $name)
|
|
{
|
|
$_plugin = "smarty_{$type}filter_{$name}";
|
|
$_filter_name = $_plugin;
|
|
if ($this->smarty->loadPlugin($_plugin)) {
|
|
if (class_exists($_plugin, false)) {
|
|
$_plugin = array($_plugin, 'execute');
|
|
}
|
|
if (is_callable($_plugin)) {
|
|
return $this->smarty->registered_filters[$type][$_filter_name] = $_plugin;
|
|
}
|
|
}
|
|
throw new SmartyException("{$type}filter \"{$name}\" not callable");
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
?>
|