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