Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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