Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * Validates a MultiLength as defined by the HTML spec.
5
 *
6
 * A multilength is either a integer (pixel count), a percentage, or
7
 * a relative number.
8
 */
9
class HTMLPurifier_AttrDef_HTML_MultiLength extends HTMLPurifier_AttrDef_HTML_Length
10
{
11
 
12
    /**
13
     * @param string $string
14
     * @param HTMLPurifier_Config $config
15
     * @param HTMLPurifier_Context $context
16
     * @return bool|string
17
     */
18
    public function validate($string, $config, $context)
19
    {
20
        $string = trim($string);
21
        if ($string === '') {
22
            return false;
23
        }
24
 
25
        $parent_result = parent::validate($string, $config, $context);
26
        if ($parent_result !== false) {
27
            return $parent_result;
28
        }
29
 
30
        $length = strlen($string);
31
        $last_char = $string[$length - 1];
32
 
33
        if ($last_char !== '*') {
34
            return false;
35
        }
36
 
37
        $int = substr($string, 0, $length - 1);
38
 
39
        if ($int == '') {
40
            return '*';
41
        }
42
        if (!is_numeric($int)) {
43
            return false;
44
        }
45
 
46
        $int = (int)$int;
47
        if ($int < 0) {
48
            return false;
49
        }
50
        if ($int == 0) {
51
            return '0';
52
        }
53
        if ($int == 1) {
54
            return '*';
55
        }
56
        return ((string)$int) . '*';
57
    }
58
}
59
 
60
// vim: et sw=4 sts=4