]> git.immae.eu Git - github/wallabag/wallabag.git/blame - inc/3rdparty/htmlpurifier/HTMLPurifier/AttrDef/CSS/ListStyle.php
remove autoload section in composer.json
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / HTMLPurifier / AttrDef / CSS / ListStyle.php
CommitLineData
d4949327
NL
1<?php\r
2\r
3/**\r
4 * Validates shorthand CSS property list-style.\r
5 * @warning Does not support url tokens that have internal spaces.\r
6 */\r
7class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef\r
8{\r
9\r
10 /**\r
11 * Local copy of validators.\r
12 * @type HTMLPurifier_AttrDef[]\r
13 * @note See HTMLPurifier_AttrDef_CSS_Font::$info for a similar impl.\r
14 */\r
15 protected $info;\r
16\r
17 /**\r
18 * @param HTMLPurifier_Config $config\r
19 */\r
20 public function __construct($config)\r
21 {\r
22 $def = $config->getCSSDefinition();\r
23 $this->info['list-style-type'] = $def->info['list-style-type'];\r
24 $this->info['list-style-position'] = $def->info['list-style-position'];\r
25 $this->info['list-style-image'] = $def->info['list-style-image'];\r
26 }\r
27\r
28 /**\r
29 * @param string $string\r
30 * @param HTMLPurifier_Config $config\r
31 * @param HTMLPurifier_Context $context\r
32 * @return bool|string\r
33 */\r
34 public function validate($string, $config, $context)\r
35 {\r
36 // regular pre-processing\r
37 $string = $this->parseCDATA($string);\r
38 if ($string === '') {\r
39 return false;\r
40 }\r
41\r
42 // assumes URI doesn't have spaces in it\r
43 $bits = explode(' ', strtolower($string)); // bits to process\r
44\r
45 $caught = array();\r
46 $caught['type'] = false;\r
47 $caught['position'] = false;\r
48 $caught['image'] = false;\r
49\r
50 $i = 0; // number of catches\r
51 $none = false;\r
52\r
53 foreach ($bits as $bit) {\r
54 if ($i >= 3) {\r
55 return;\r
56 } // optimization bit\r
57 if ($bit === '') {\r
58 continue;\r
59 }\r
60 foreach ($caught as $key => $status) {\r
61 if ($status !== false) {\r
62 continue;\r
63 }\r
64 $r = $this->info['list-style-' . $key]->validate($bit, $config, $context);\r
65 if ($r === false) {\r
66 continue;\r
67 }\r
68 if ($r === 'none') {\r
69 if ($none) {\r
70 continue;\r
71 } else {\r
72 $none = true;\r
73 }\r
74 if ($key == 'image') {\r
75 continue;\r
76 }\r
77 }\r
78 $caught[$key] = $r;\r
79 $i++;\r
80 break;\r
81 }\r
82 }\r
83\r
84 if (!$i) {\r
85 return false;\r
86 }\r
87\r
88 $ret = array();\r
89\r
90 // construct type\r
91 if ($caught['type']) {\r
92 $ret[] = $caught['type'];\r
93 }\r
94\r
95 // construct image\r
96 if ($caught['image']) {\r
97 $ret[] = $caught['image'];\r
98 }\r
99\r
100 // construct position\r
101 if ($caught['position']) {\r
102 $ret[] = $caught['position'];\r
103 }\r
104\r
105 if (empty($ret)) {\r
106 return false;\r
107 }\r
108 return implode(' ', $ret);\r
109 }\r
110}\r
111\r
112// vim: et sw=4 sts=4\r