ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
HTMLPurifier_ErrorCollector Class Reference

Error collection class that enables HTML Purifier to report HTML problems back to the user. More...

+ Collaboration diagram for HTMLPurifier_ErrorCollector:

Public Member Functions

 __construct ($context)
 
 send ($severity, $msg)
 Sends an error message to the collector for later use. More...
 
 getRaw ()
 Retrieves raw error data for custom formatter to use. More...
 
 getHTMLFormatted ($config, $errors=null)
 Default HTML formatting implementation for error messages. More...
 

Data Fields

const LINENO = 0
 Identifiers for the returned error array. More...
 
const SEVERITY = 1
 
const MESSAGE = 2
 
const CHILDREN = 3
 

Protected Attributes

 $errors
 array More...
 
 $_current
 array More...
 
 $_stacks = array(array())
 array More...
 
 $locale
 HTMLPurifier_Language More...
 
 $generator
 HTMLPurifier_Generator More...
 
 $context
 HTMLPurifier_Context More...
 
 $lines = array()
 array More...
 

Private Member Functions

 _renderStruct (&$ret, $struct, $line=null, $col=null)
 

Detailed Description

Error collection class that enables HTML Purifier to report HTML problems back to the user.

Definition at line 7 of file ErrorCollector.php.

Constructor & Destructor Documentation

◆ __construct()

HTMLPurifier_ErrorCollector::__construct (   $context)
Parameters
HTMLPurifier_Context$context

Definition at line 57 of file ErrorCollector.php.

References $context.

58  {
59  $this->locale =& $context->get('Locale');
60  $this->context = $context;
61  $this->_current =& $this->_stacks[0];
62  $this->errors =& $this->_stacks[0];
63  }
$context
HTMLPurifier_Context

Member Function Documentation

◆ _renderStruct()

HTMLPurifier_ErrorCollector::_renderStruct ( $ret,
  $struct,
  $line = null,
  $col = null 
)
private

Definition at line 206 of file ErrorCollector.php.

References $context, $current, $i, and $ret.

Referenced by getHTMLFormatted().

207  {
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;
214  $string = '';
215  $string .= '<div>';
216  // W3C uses an icon to indicate the severity of the 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> ";
221  } else {
222  $string .= '<em class="location">End of Document: </em> ';
223  }
224  $string .= '<strong class="description">' . $this->generator->escape($msg) . '</strong> ';
225  $string .= '</div>';
226  // Here, have a marker for the character on the column appropriate.
227  // Be sure to clip extremely long lines.
228  //$string .= '<pre>';
229  //$string .= '';
230  //$string .= '</pre>';
231  $ret[] = $string;
232  }
233  foreach ($current->children as $array) {
234  $context[] = $current;
235  $stack = array_merge($stack, array_reverse($array, true));
236  for ($i = count($array); $i > 0; $i--) {
237  $context_stack[] = $context;
238  }
239  }
240  }
241  }
$context
HTMLPurifier_Context
$ret
Definition: parser.php:6
$i
Definition: disco.tpl.php:19
+ Here is the caller graph for this function:

◆ getHTMLFormatted()

HTMLPurifier_ErrorCollector::getHTMLFormatted (   $config,
  $errors = null 
)

Default HTML formatting implementation for error messages.

Parameters
HTMLPurifier_Config$configConfiguration, vital for HTML output nature
array$errorsErrors array to display; used for recursion.
Returns
string

Definition at line 174 of file ErrorCollector.php.

References $config, $errors, $ret, and _renderStruct().

175  {
176  $ret = array();
177 
178  $this->generator = new HTMLPurifier_Generator($config, $this->context);
179  if ($errors === null) {
181  }
182 
183  // 'At line' message needs to be removed
184 
185  // generation code for new structure goes here. It needs to be recursive.
186  foreach ($this->lines as $line => $col_array) {
187  if ($line == -1) {
188  continue;
189  }
190  foreach ($col_array as $col => $struct) {
191  $this->_renderStruct($ret, $struct, $line, $col);
192  }
193  }
194  if (isset($this->lines[-1])) {
195  $this->_renderStruct($ret, $this->lines[-1]);
196  }
197 
198  if (empty($errors)) {
199  return '<p>' . $this->locale->getMessage('ErrorCollector: No errors') . '</p>';
200  } else {
201  return '<ul><li>' . implode('</li><li>', $ret) . '</li></ul>';
202  }
203 
204  }
$config
Definition: bootstrap.php:15
Generates HTML from tokens.
Definition: Generator.php:10
_renderStruct(&$ret, $struct, $line=null, $col=null)
$ret
Definition: parser.php:6
+ Here is the call graph for this function:

◆ getRaw()

HTMLPurifier_ErrorCollector::getRaw ( )

Retrieves raw error data for custom formatter to use.

Definition at line 163 of file ErrorCollector.php.

References $errors.

164  {
165  return $this->errors;
166  }

◆ send()

HTMLPurifier_ErrorCollector::send (   $severity,
  $msg 
)

Sends an error message to the collector for later use.

Parameters
int$severityError severity, PHP error style (don't use E_USER_)
string$msgError message text

Definition at line 70 of file ErrorCollector.php.

References PHPMailer\PHPMailer\$token, HTMLPurifier_ErrorStruct\ATTR, HTMLPurifier_ErrorStruct\CSSPROP, and HTMLPurifier_ErrorStruct\TOKEN.

71  {
72  $args = array();
73  if (func_num_args() > 2) {
74  $args = func_get_args();
75  array_shift($args);
76  unset($args[0]);
77  }
78 
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);
83 
84  // perform special substitutions, also add custom parameters
85  $subst = array();
86  if (!is_null($token)) {
87  $args['CurrentToken'] = $token;
88  }
89  if (!is_null($attr)) {
90  $subst['$CurrentAttr.Name'] = $attr;
91  if (isset($token->attr[$attr])) {
92  $subst['$CurrentAttr.Value'] = $token->attr[$attr];
93  }
94  }
95 
96  if (empty($args)) {
97  $msg = $this->locale->getMessage($msg);
98  } else {
99  $msg = $this->locale->formatMessage($msg, $args);
100  }
101 
102  if (!empty($subst)) {
103  $msg = strtr($msg, $subst);
104  }
105 
106  // (numerically indexed)
107  $error = array(
108  self::LINENO => $line,
109  self::SEVERITY => $severity,
110  self::MESSAGE => $msg,
111  self::CHILDREN => array()
112  );
113  $this->_current[] = $error;
114 
115  // NEW CODE BELOW ...
116  // Top-level errors are either:
117  // TOKEN type, if $value is set appropriately, or
118  // "syntax" type, if $value is null
119  $new_struct = new HTMLPurifier_ErrorStruct();
120  $new_struct->type = HTMLPurifier_ErrorStruct::TOKEN;
121  if ($token) {
122  $new_struct->value = clone $token;
123  }
124  if (is_int($line) && is_int($col)) {
125  if (isset($this->lines[$line][$col])) {
126  $struct = $this->lines[$line][$col];
127  } else {
128  $struct = $this->lines[$line][$col] = $new_struct;
129  }
130  // These ksorts may present a performance problem
131  ksort($this->lines[$line], SORT_NUMERIC);
132  } else {
133  if (isset($this->lines[-1])) {
134  $struct = $this->lines[-1];
135  } else {
136  $struct = $this->lines[-1] = $new_struct;
137  }
138  }
139  ksort($this->lines, SORT_NUMERIC);
140 
141  // Now, check if we need to operate on a lower structure
142  if (!empty($attr)) {
143  $struct = $struct->getChild(HTMLPurifier_ErrorStruct::ATTR, $attr);
144  if (!$struct->value) {
145  $struct->value = array($attr, 'PUT VALUE HERE');
146  }
147  }
148  if (!empty($cssprop)) {
149  $struct = $struct->getChild(HTMLPurifier_ErrorStruct::CSSPROP, $cssprop);
150  if (!$struct->value) {
151  // if we tokenize CSS this might be a little more difficult to do
152  $struct->value = array($cssprop, 'PUT VALUE HERE');
153  }
154  }
155 
156  // Ok, structs are all setup, now time to register the error
157  $struct->addError($severity, $msg);
158  }
Records errors for particular segments of an HTML document such as tokens, attributes or CSS properti...
Definition: ErrorStruct.php:9
const TOKEN
Possible values for $children first-key.
Definition: ErrorStruct.php:16

Field Documentation

◆ $_current

HTMLPurifier_ErrorCollector::$_current
protected

array

Definition at line 27 of file ErrorCollector.php.

◆ $_stacks

HTMLPurifier_ErrorCollector::$_stacks = array(array())
protected

array

Definition at line 32 of file ErrorCollector.php.

◆ $context

HTMLPurifier_ErrorCollector::$context
protected

HTMLPurifier_Context

Definition at line 47 of file ErrorCollector.php.

Referenced by __construct(), and _renderStruct().

◆ $errors

HTMLPurifier_ErrorCollector::$errors
protected

array

Definition at line 22 of file ErrorCollector.php.

Referenced by getHTMLFormatted(), and getRaw().

◆ $generator

HTMLPurifier_ErrorCollector::$generator
protected

HTMLPurifier_Generator

Definition at line 42 of file ErrorCollector.php.

◆ $lines

HTMLPurifier_ErrorCollector::$lines = array()
protected

array

Definition at line 52 of file ErrorCollector.php.

◆ $locale

HTMLPurifier_ErrorCollector::$locale
protected

HTMLPurifier_Language

Definition at line 37 of file ErrorCollector.php.

◆ CHILDREN

const HTMLPurifier_ErrorCollector::CHILDREN = 3

Definition at line 17 of file ErrorCollector.php.

◆ LINENO

const HTMLPurifier_ErrorCollector::LINENO = 0

Identifiers for the returned error array.

These are purposely numeric so list() can be used.

Definition at line 14 of file ErrorCollector.php.

◆ MESSAGE

const HTMLPurifier_ErrorCollector::MESSAGE = 2

Definition at line 16 of file ErrorCollector.php.

◆ SEVERITY

const HTMLPurifier_ErrorCollector::SEVERITY = 1

Definition at line 15 of file ErrorCollector.php.


The documentation for this class was generated from the following file: