1: | <?php
|
2: |
|
3: |
|
4: | |
5: | |
6: | |
7: | |
8: | |
9: |
|
10: | class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
|
11: | {
|
12: |
|
13: | |
14: | |
15: | |
16: | |
17: |
|
18: | public $valid_values = array();
|
19: |
|
20: | |
21: | |
22: | |
23: |
|
24: | protected $case_sensitive = false;
|
25: |
|
26: | |
27: | |
28: | |
29: |
|
30: | public function __construct($valid_values = array(), $case_sensitive = false)
|
31: | {
|
32: | $this->valid_values = array_flip($valid_values);
|
33: | $this->case_sensitive = $case_sensitive;
|
34: | }
|
35: |
|
36: | |
37: | |
38: | |
39: | |
40: | |
41: |
|
42: | public function validate($string, $config, $context)
|
43: | {
|
44: | $string = trim($string);
|
45: | if (!$this->case_sensitive) {
|
46: |
|
47: | $string = ctype_lower($string) ? $string : strtolower($string);
|
48: | }
|
49: | $result = isset($this->valid_values[$string]);
|
50: |
|
51: | return $result ? $string : false;
|
52: | }
|
53: |
|
54: | |
55: | |
56: | |
57: | |
58: | |
59: |
|
60: | public function make($string)
|
61: | {
|
62: | if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') {
|
63: | $string = substr($string, 2);
|
64: | $sensitive = true;
|
65: | } else {
|
66: | $sensitive = false;
|
67: | }
|
68: | $values = explode(',', $string);
|
69: | return new HTMLPurifier_AttrDef_Enum($values, $sensitive);
|
70: | }
|
71: | }
|
72: |
|
73: |
|
74: | |