1<?php
2
3/**
4 * Represents a pre or post processing filter on HTML Purifier's output
5 *
6 * Sometimes, a little ad-hoc fixing of HTML has to be done before
7 * it gets sent through HTML Purifier: you can use filters to acheive
8 * this effect. For instance, YouTube videos can be preserved using
9 * this manner. You could have used a decorator for this task, but
10 * PHP's support for them is not terribly robust, so we're going
11 * to just loop through the filters.
12 *
13 * Filters should be exited first in, last out. If there are three filters,
14 * named 1, 2 and 3, the order of execution should go 1->preFilter,
15 * 2->preFilter, 3->preFilter, purify, 3->postFilter, 2->postFilter,
16 * 1->postFilter.
17 *
18 * @note Methods are not declared abstract as it is perfectly legitimate
19 *       for an implementation not to want anything to happen on a step
20 */
21
22class HTMLPurifier_Filter
23{
24
25    /**
26     * Name of the filter for identification purposes.
27     * @type string
28     */
29    public $name;
30
31    /**
32     * Pre-processor function, handles HTML before HTML Purifier
33     * @param string $html
34     * @param HTMLPurifier_Config $config
35     * @param HTMLPurifier_Context $context
36     * @return string
37     */
38    public function preFilter($html, $config, $context)
39    {
40        return $html;
41    }
42
43    /**
44     * Post-processor function, handles HTML after HTML Purifier
45     * @param string $html
46     * @param HTMLPurifier_Config $config
47     * @param HTMLPurifier_Context $context
48     * @return string
49     */
50    public function postFilter($html, $config, $context)
51    {
52        return $html;
53    }
54}
55
56// vim: et sw=4 sts=4
57