source: trunk/include/smarty/libs/sysplugins/smarty_internal_filter_handler.php @ 23485

Last change on this file since 23485 was 23485, checked in by rvelices, 11 years ago

Smarty EOL style LF svn property

  • Property svn:eol-style set to LF
File size: 2.6 KB
Line 
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 */
18class 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?>
Note: See TracBrowser for help on using the repository browser.