Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * Fluent interface for validating the contents of member variables.
5
 * This should be immutable. See HTMLPurifier_ConfigSchema_Validator for
6
 * use-cases. We name this an 'atom' because it's ONLY for validations that
7
 * are independent and usually scalar.
8
 */
9
class HTMLPurifier_ConfigSchema_ValidatorAtom
10
{
11
    /**
12
     * @type string
13
     */
14
    protected $context;
15
 
16
    /**
17
     * @type object
18
     */
19
    protected $obj;
20
 
21
    /**
22
     * @type string
23
     */
24
    protected $member;
25
 
26
    /**
27
     * @type mixed
28
     */
29
    protected $contents;
30
 
31
    public function __construct($context, $obj, $member)
32
    {
33
        $this->context = $context;
34
        $this->obj = $obj;
35
        $this->member = $member;
36
        $this->contents =& $obj->$member;
37
    }
38
 
39
    /**
40
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
41
     */
42
    public function assertIsString()
43
    {
44
        if (!is_string($this->contents)) {
45
            $this->error('must be a string');
46
        }
47
        return $this;
48
    }
49
 
50
    /**
51
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
52
     */
53
    public function assertIsBool()
54
    {
55
        if (!is_bool($this->contents)) {
56
            $this->error('must be a boolean');
57
        }
58
        return $this;
59
    }
60
 
61
    /**
62
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
63
     */
64
    public function assertIsArray()
65
    {
66
        if (!is_array($this->contents)) {
67
            $this->error('must be an array');
68
        }
69
        return $this;
70
    }
71
 
72
    /**
73
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
74
     */
75
    public function assertNotNull()
76
    {
77
        if ($this->contents === null) {
78
            $this->error('must not be null');
79
        }
80
        return $this;
81
    }
82
 
83
    /**
84
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
85
     */
86
    public function assertAlnum()
87
    {
88
        $this->assertIsString();
89
        if (!ctype_alnum($this->contents)) {
90
            $this->error('must be alphanumeric');
91
        }
92
        return $this;
93
    }
94
 
95
    /**
96
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
97
     */
98
    public function assertNotEmpty()
99
    {
100
        if (empty($this->contents)) {
101
            $this->error('must not be empty');
102
        }
103
        return $this;
104
    }
105
 
106
    /**
107
     * @return HTMLPurifier_ConfigSchema_ValidatorAtom
108
     */
109
    public function assertIsLookup()
110
    {
111
        $this->assertIsArray();
112
        foreach ($this->contents as $v) {
113
            if ($v !== true) {
114
                $this->error('must be a lookup array');
115
            }
116
        }
117
        return $this;
118
    }
119
 
120
    /**
121
     * @param string $msg
122
     * @throws HTMLPurifier_ConfigSchema_Exception
123
     */
124
    protected function error($msg)
125
    {
126
        throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
127
    }
128
}
129
 
130
// vim: et sw=4 sts=4