4 * Smarty Internal Plugin Filter
6 * External Smarty filter methods
13 * Class for filter methods
15 class Smarty_Internal_Filter {
17 function __construct($smarty)
19 $this->smarty = $smarty;
22 * Registers a filter function
24 * @param string $type filter type
25 * @param callback $callback
27 public function registerFilter($type, $callback)
29 $this->smarty->registered_filters[$type][$this->_get_filter_name($callback)] = $callback;
33 * Unregisters a filter function
35 * @param string $type filter type
36 * @param callback $callback
38 public function unregisterFilter($type, $callback)
40 $name = $this->_get_filter_name($callback);
41 if(isset($this->smarty->registered_filters[$type][$name])) {
42 unset($this->smarty->registered_filters[$type][$name]);
48 * Return internal filter name
50 * @param callback $function_name
52 public function _get_filter_name($function_name)
54 if (is_array($function_name)) {
55 $_class_name = (is_object($function_name[0]) ?
56 get_class($function_name[0]) : $function_name[0]);
57 return $_class_name . '_' . $function_name[1];
59 return $function_name;
65 * load a filter of specified type and name
67 * @param string $type filter type
68 * @param string $name filter name
71 function loadFilter($type, $name)
73 $_plugin = "smarty_{$type}filter_{$name}";
74 $_filter_name = $_plugin;
75 if ($this->smarty->loadPlugin($_plugin)) {
76 if (class_exists($_plugin, false)) {
77 $_plugin = array($_plugin, 'execute');
79 if (is_callable($_plugin)) {
80 return $this->smarty->registered_filters[$type][$_filter_name] = $_plugin;
83 throw new SmartyException("{$type}filter \"{$name}\" not callable");