1: | <?php
|
2: |
|
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: |
|
10: | class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
|
11: | {
|
12: |
|
13: | |
14: | |
15: | |
16: |
|
17: | protected $negative = true;
|
18: |
|
19: | |
20: | |
21: | |
22: |
|
23: | protected $zero = true;
|
24: |
|
25: | |
26: | |
27: | |
28: |
|
29: | protected $positive = true;
|
30: |
|
31: | |
32: | |
33: | |
34: | |
35: |
|
36: | public function __construct($negative = true, $zero = true, $positive = true)
|
37: | {
|
38: | $this->negative = $negative;
|
39: | $this->zero = $zero;
|
40: | $this->positive = $positive;
|
41: | }
|
42: |
|
43: | |
44: | |
45: | |
46: | |
47: | |
48: |
|
49: | public function validate($integer, $config, $context)
|
50: | {
|
51: | $integer = $this->parseCDATA($integer);
|
52: | if ($integer === '') {
|
53: | return false;
|
54: | }
|
55: |
|
56: |
|
57: |
|
58: |
|
59: |
|
60: | if ($this->negative && $integer[0] === '-') {
|
61: | $digits = substr($integer, 1);
|
62: | if ($digits === '0') {
|
63: | $integer = '0';
|
64: | }
|
65: | } elseif ($this->positive && $integer[0] === '+') {
|
66: | $digits = $integer = substr($integer, 1);
|
67: | } else {
|
68: | $digits = $integer;
|
69: | }
|
70: |
|
71: |
|
72: | if (!ctype_digit($digits)) {
|
73: | return false;
|
74: | }
|
75: |
|
76: |
|
77: | if (!$this->zero && $integer == 0) {
|
78: | return false;
|
79: | }
|
80: | if (!$this->positive && $integer > 0) {
|
81: | return false;
|
82: | }
|
83: | if (!$this->negative && $integer < 0) {
|
84: | return false;
|
85: | }
|
86: |
|
87: | return $integer;
|
88: | }
|
89: | }
|
90: |
|
91: |
|
92: | |