|
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 */ |
|
11 |
|
12 /** |
|
13 * Class for filter processing |
|
14 * |
|
15 * @package Smarty |
|
16 * @subpackage PluginsInternal |
|
17 */ |
|
18 class Smarty_Internal_Filter_Handler { |
|
19 |
|
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 } |
|
67 |
|
68 } |
|
69 |
|
70 ?> |