diff options
Diffstat (limited to 'inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/Input.php')
-rw-r--r-- | inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/Input.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/Input.php b/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/Input.php new file mode 100644 index 00000000..17a2ce4c --- /dev/null +++ b/inc/3rdparty/htmlpurifier/HTMLPurifier/AttrTransform/Input.php | |||
@@ -0,0 +1,56 @@ | |||
1 | <?php | ||
2 | |||
3 | /** | ||
4 | * Performs miscellaneous cross attribute validation and filtering for | ||
5 | * input elements. This is meant to be a post-transform. | ||
6 | */ | ||
7 | class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform | ||
8 | { | ||
9 | /** | ||
10 | * @type HTMLPurifier_AttrDef_HTML_Pixels | ||
11 | */ | ||
12 | protected $pixels; | ||
13 | |||
14 | public function __construct() | ||
15 | { | ||
16 | $this->pixels = new HTMLPurifier_AttrDef_HTML_Pixels(); | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * @param array $attr | ||
21 | * @param HTMLPurifier_Config $config | ||
22 | * @param HTMLPurifier_Context $context | ||
23 | * @return array | ||
24 | */ | ||
25 | public function transform($attr, $config, $context) | ||
26 | { | ||
27 | if (!isset($attr['type'])) { | ||
28 | $t = 'text'; | ||
29 | } else { | ||
30 | $t = strtolower($attr['type']); | ||
31 | } | ||
32 | if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') { | ||
33 | unset($attr['checked']); | ||
34 | } | ||
35 | if (isset($attr['maxlength']) && $t !== 'text' && $t !== 'password') { | ||
36 | unset($attr['maxlength']); | ||
37 | } | ||
38 | if (isset($attr['size']) && $t !== 'text' && $t !== 'password') { | ||
39 | $result = $this->pixels->validate($attr['size'], $config, $context); | ||
40 | if ($result === false) { | ||
41 | unset($attr['size']); | ||
42 | } else { | ||
43 | $attr['size'] = $result; | ||
44 | } | ||
45 | } | ||
46 | if (isset($attr['src']) && $t !== 'image') { | ||
47 | unset($attr['src']); | ||
48 | } | ||
49 | if (!isset($attr['value']) && ($t === 'radio' || $t === 'checkbox')) { | ||
50 | $attr['value'] = ''; | ||
51 | } | ||
52 | return $attr; | ||
53 | } | ||
54 | } | ||
55 | |||
56 | // vim: et sw=4 sts=4 | ||