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; } } ?>