Minor dependency updates
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / AttrTransform / Input.php
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