45 protected function start($tag, $attr = array()) {
46 return $this->generator->generateFromToken(
55 protected function end($tag) {
56 return $this->generator->generateFromToken(
68 protected function element($tag, $contents, $attr = array(), $escape =
true) {
69 return $this->
start($tag, $attr) .
70 ($escape ? $this->
escape($contents) : $contents) .
75 return $this->generator->generateFromToken(
80 protected function text($text) {
81 return $this->generator->generateFromToken(
91 protected function row($name, $value) {
92 if (is_bool($value)) $value = $value ?
'On' :
'Off';
94 $this->
start(
'tr') .
"\n" .
95 $this->
element(
'th', $name) .
"\n" .
96 $this->
element(
'td', $value) .
"\n" .
107 $string = htmlspecialchars($string, ENT_COMPAT,
'UTF-8');
116 protected function listify($array, $polite =
false) {
117 if (empty($array))
return 'None';
120 foreach ($array as $value) {
123 if (
$i > 0 && !($polite &&
$i == 1))
$ret .=
', ';
124 if ($polite &&
$i == 1)
$ret .=
'and ';
134 protected function getClass($obj, $sec_prefix =
'') {
136 if ($five === null) $five = version_compare(PHP_VERSION,
'5',
'>=');
137 $prefix =
'HTMLPurifier_' . $sec_prefix;
138 if (!$five) $prefix = strtolower($prefix);
139 $class = str_replace($prefix,
'', get_class($obj));
140 $lclass = strtolower($class);
145 foreach ($obj->valid_values as $value => $bool) {
148 $class .= implode(
', ', $values);
150 case 'css_composite':
152 foreach ($obj->defs as $def) {
153 $values[] = $this->
getClass($def, $sec_prefix);
155 $class .= implode(
', ', $values);
158 $class .= $this->
getClass($obj->single, $sec_prefix) .
', ';
161 case 'css_denyelementdecorator':
162 $class .= $this->
getClass($obj->def, $sec_prefix) .
', ';
163 $class .= $obj->element;
165 case 'css_importantdecorator':
166 $class .= $this->
getClass($obj->def, $sec_prefix);
167 if ($obj->allow) $class .=
', !important';