59 $this->locale =&
$context->get(
'Locale');
61 $this->_current =& $this->_stacks[0];
62 $this->errors =& $this->_stacks[0];
70 public function send($severity, $msg)
73 if (func_num_args() > 2) {
74 $args = func_get_args();
79 $token = $this->context->get(
'CurrentToken',
true);
80 $line =
$token ?
$token->line : $this->context->get(
'CurrentLine',
true);
81 $col =
$token ?
$token->col : $this->context->get(
'CurrentCol',
true);
82 $attr = $this->context->get(
'CurrentAttr',
true);
87 $args[
'CurrentToken'] =
$token;
89 if (!is_null($attr)) {
90 $subst[
'$CurrentAttr.Name'] = $attr;
91 if (isset(
$token->attr[$attr])) {
92 $subst[
'$CurrentAttr.Value'] =
$token->attr[$attr];
97 $msg = $this->locale->getMessage($msg);
99 $msg = $this->locale->formatMessage($msg, $args);
102 if (!empty($subst)) {
103 $msg = strtr($msg, $subst);
108 self::LINENO => $line,
109 self::SEVERITY => $severity,
110 self::MESSAGE => $msg,
111 self::CHILDREN => array()
113 $this->_current[] = $error;
122 $new_struct->value = clone
$token;
124 if (is_int($line) && is_int($col)) {
125 if (isset($this->lines[$line][$col])) {
126 $struct = $this->lines[$line][$col];
128 $struct = $this->lines[$line][$col] = $new_struct;
131 ksort($this->lines[$line], SORT_NUMERIC);
133 if (isset($this->lines[-1])) {
134 $struct = $this->lines[-1];
136 $struct = $this->lines[-1] = $new_struct;
139 ksort($this->lines, SORT_NUMERIC);
144 if (!$struct->value) {
145 $struct->value = array($attr,
'PUT VALUE HERE');
148 if (!empty($cssprop)) {
150 if (!$struct->value) {
152 $struct->value = array($cssprop,
'PUT VALUE HERE');
157 $struct->addError($severity, $msg);
186 foreach ($this->lines as $line => $col_array) {
190 foreach ($col_array as $col => $struct) {
194 if (isset($this->lines[-1])) {
199 return '<p>' . $this->locale->getMessage(
'ErrorCollector: No errors') .
'</p>';
201 return '<ul><li>' . implode(
'</li><li>',
$ret) .
'</li></ul>';
208 $stack = array($struct);
209 $context_stack = array(array());
210 while (
$current = array_pop($stack)) {
211 $context = array_pop($context_stack);
212 foreach (
$current->errors as $error) {
213 list($severity, $msg) = $error;
217 $error = $this->locale->getErrorName($severity);
218 $string .=
"<span class=\"error e$severity\"><strong>$error</strong></span> ";
219 if (!is_null($line) && !is_null($col)) {
220 $string .=
"<em class=\"location\">Line $line, Column $col: </em> ";
222 $string .=
'<em class="location">End of Document: </em> ';
224 $string .=
'<strong class="description">' . $this->generator->escape($msg) .
'</strong> ';
233 foreach (
$current->children as $array) {
235 $stack = array_merge($stack, array_reverse($array,
true));
236 for (
$i = count($array);
$i > 0;
$i--) {
Generates HTML from tokens.
const LINENO
Identifiers for the returned error array.
_renderStruct(&$ret, $struct, $line=null, $col=null)
Records errors for particular segments of an HTML document such as tokens, attributes or CSS properti...
send($severity, $msg)
Sends an error message to the collector for later use.
$context
HTMLPurifier_Context
getHTMLFormatted($config, $errors=null)
Default HTML formatting implementation for error messages.
const TOKEN
Possible values for $children first-key.
$generator
HTMLPurifier_Generator
getRaw()
Retrieves raw error data for custom formatter to use.
Error collection class that enables HTML Purifier to report HTML problems back to the user...
$locale
HTMLPurifier_Language