1 <?php
2 /**
3 * Smarty Internal Plugin Filter Handler
4 *
5 * Smarty filter handler class
6 *
7 * @package Smarty
8 * @subpackage PluginsInternal
9 * @author Uwe Tews
10 */
12 /**
13 * Class for filter processing
14 *
15 * @package Smarty
16 * @subpackage PluginsInternal
17 */
18 class Smarty_Internal_Filter_Handler {
20 /**
21 * Run filters over content
22 *
23 * The filters will be lazy loaded if required
24 * class name format: Smarty_FilterType_FilterName
25 * plugin filename format: filtertype.filtername.php
26 * Smarty2 filter plugins could be used
27 *
28 * @param string $type the type of filter ('pre','post','output') which shall run
29 * @param string $content the content which shall be processed by the filters
30 * @param Smarty_Internal_Template $template template object
31 * @return string the filtered content
32 */
33 public static function runFilter($type, $content, Smarty_Internal_Template $template)
34 {
35 $output = $content;
36 // loop over autoload filters of specified type
37 if (!empty($template->smarty->autoload_filters[$type])) {
38 foreach ((array)$template->smarty->autoload_filters[$type] as $name) {
39 $plugin_name = "Smarty_{$type}filter_{$name}";
40 if ($template->smarty->loadPlugin($plugin_name)) {
41 if (function_exists($plugin_name)) {
42 // use loaded Smarty2 style plugin
43 $output = $plugin_name($output, $template);
44 } elseif (class_exists($plugin_name, false)) {
45 // loaded class of filter plugin
46 $output = call_user_func(array($plugin_name, 'execute'), $output, $template);
47 }
48 } else {
49 // nothing found, throw exception
50 throw new SmartyException("Unable to load filter {$plugin_name}");
51 }
52 }
53 }
54 // loop over registerd filters of specified type
55 if (!empty($template->smarty->registered_filters[$type])) {
56 foreach ($template->smarty->registered_filters[$type] as $key => $name) {
57 if (is_array($template->smarty->registered_filters[$type][$key])) {
58 $output = call_user_func($template->smarty->registered_filters[$type][$key], $output, $template);
59 } else {
60 $output = $template->smarty->registered_filters[$type][$key]($output, $template);
61 }
62 }
63 }
64 // return filtered output
65 return $output;
66 }
68 }
70 ?>