XOOPS 2.5.6
Final
Main Page
Related Pages
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Pages
VarParser.php
Go to the documentation of this file.
1
<?php
2
7
class
HTMLPurifier_VarParser
8
{
9
10
const
STRING
= 1;
11
const
ISTRING
= 2;
12
const
TEXT
= 3;
13
const
ITEXT
= 4;
14
const
INT
= 5;
15
const
FLOAT
= 6;
16
const
BOOL
= 7;
17
const
LOOKUP
= 8;
18
const
ALIST
= 9;
19
const
HASH
= 10;
20
const
MIXED
= 11;
21
26
static
public
$types
= array(
27
'string'
=> self::STRING,
28
'istring'
=> self::ISTRING,
29
'text'
=> self::TEXT,
30
'itext'
=> self::ITEXT,
31
'int'
=> self::INT,
32
'float'
=> self::FLOAT,
33
'bool'
=> self::BOOL,
34
'lookup'
=> self::LOOKUP,
35
'list'
=> self::ALIST,
36
'hash'
=> self::HASH,
37
'mixed'
=> self::MIXED
38
);
39
44
static
public
$stringTypes
= array(
45
self::STRING =>
true
,
46
self::ISTRING =>
true
,
47
self::TEXT =>
true
,
48
self::ITEXT =>
true
,
49
);
50
61
final
public
function
parse
(
$var
,
$type
, $allow_null =
false
) {
62
if
(is_string(
$type
)) {
63
if
(!isset(
HTMLPurifier_VarParser::$types
[
$type
])) {
64
throw
new
HTMLPurifier_VarParserException
(
"Invalid type '$type'"
);
65
}
else
{
66
$type =
HTMLPurifier_VarParser::$types
[
$type
];
67
}
68
}
69
$var
= $this->
parseImplementation
(
$var
,
$type
, $allow_null);
70
if
($allow_null &&
$var
=== null)
return
null;
71
// These are basic checks, to make sure nothing horribly wrong
72
// happened in our implementations.
73
switch
(
$type
) {
74
case
(self::STRING):
75
case
(self::ISTRING):
76
case
(self::TEXT):
77
case
(self::ITEXT):
78
if
(!is_string(
$var
))
break
;
79
if
(
$type
== self::ISTRING ||
$type
== self::ITEXT)
$var
= strtolower(
$var
);
80
return
$var
;
81
case
(self::INT):
82
if
(!is_int(
$var
))
break
;
83
return
$var
;
84
case
(self::FLOAT):
85
if
(!is_float(
$var
))
break
;
86
return
$var
;
87
case
(self::BOOL):
88
if
(!is_bool(
$var
))
break
;
89
return
$var
;
90
case
(self::LOOKUP):
91
case
(self::ALIST):
92
case
(self::HASH):
93
if
(!is_array(
$var
))
break
;
94
if
(
$type
=== self::LOOKUP) {
95
foreach
(
$var
as $k)
if
($k !==
true
) $this->
error
(
'Lookup table contains value other than true'
);
96
} elseif (
$type
=== self::ALIST) {
97
$keys = array_keys(
$var
);
98
if
(array_keys($keys) !== $keys) $this->
error
(
'Indices for list are not uniform'
);
99
}
100
return
$var
;
101
case
(self::MIXED):
102
return
$var
;
103
default
:
104
$this->
errorInconsistent
(get_class($this),
$type
);
105
}
106
$this->
errorGeneric
(
$var
,
$type
);
107
}
108
113
protected
function
parseImplementation
(
$var
,
$type
, $allow_null) {
114
return
$var
;
115
}
116
120
protected
function
error
(
$msg
) {
121
throw
new
HTMLPurifier_VarParserException
(
$msg
);
122
}
123
130
protected
function
errorInconsistent
($class,
$type
) {
131
throw
new
HTMLPurifier_Exception
(
"Inconsistency in $class: "
.
HTMLPurifier_VarParser::getTypeName
(
$type
).
" not implemented"
);
132
}
133
137
protected
function
errorGeneric
(
$var
,
$type
) {
138
$vtype = gettype(
$var
);
139
$this->
error
(
"Expected type "
.
HTMLPurifier_VarParser::getTypeName
(
$type
).
", got $vtype"
);
140
}
141
142
static
public
function
getTypeName
(
$type
) {
143
static
$lookup;
144
if
(!$lookup) {
145
// Lazy load the alternative lookup table
146
$lookup = array_flip(
HTMLPurifier_VarParser::$types
);
147
}
148
if
(!isset($lookup[
$type
]))
return
'unknown'
;
149
return
$lookup[
$type
];
150
}
151
152
}
153
154
// vim: et sw=4 sts=4
L:
0xoops
xoops-2.5.6
htdocs
xoops_lib
modules
protector
library
HTMLPurifier
VarParser.php
Generated on Fri May 10 2013 01:04:31 for XOOPS 2.5.6 by
1.8.3.1