ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
XmlResponseHandler.php
Go to the documentation of this file.
1 <?php
7 namespace Whoops\Handler;
8 
11 
18 {
22  private $returnFrames = false;
23 
28  public function addTraceToOutput($returnFrames = null)
29  {
30  if (func_num_args() == 0) {
31  return $this->returnFrames;
32  }
33 
34  $this->returnFrames = (bool) $returnFrames;
35  return $this;
36  }
37 
41  public function handle()
42  {
43  $response = [
44  'error' => Formatter::formatExceptionAsDataArray(
45  $this->getInspector(),
46  $this->addTraceToOutput()
47  ),
48  ];
49 
50  echo $this->toXml($response);
51 
52  return Handler::QUIT;
53  }
54 
58  public function contentType()
59  {
60  return 'application/xml';
61  }
62 
68  private static function addDataToNode(\SimpleXMLElement $node, $data)
69  {
70  assert('is_array($data) || $node instanceof Traversable');
71 
72  foreach ($data as $key => $value) {
73  if (is_numeric($key)) {
74  // Convert the key to a valid string
75  $key = "unknownNode_". (string) $key;
76  }
77 
78  // Delete any char not allowed in XML element names
79  $key = preg_replace('/[^a-z0-9\-\_\.\:]/i', '', $key);
80 
81  if (is_array($value)) {
82  $child = $node->addChild($key);
83  self::addDataToNode($child, $value);
84  } else {
85  $value = str_replace('&', '&amp;', print_r($value, true));
86  $node->addChild($key, $value);
87  }
88  }
89 
90  return $node;
91  }
92 
99  private static function toXml($data)
100  {
101  assert('is_array($data) || $node instanceof Traversable');
102 
103  $node = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><root />");
104 
105  return self::addDataToNode($node, $data)->asXML();
106  }
107 }
Whoops - php errors for cool kids.
Add rich text string
The name of the decorator.
Catches an exception and converts it to an XML response.
const QUIT
The Handler has handled the Throwable in some way, and wishes to quit/stop execution.
Definition: Handler.php:31
Abstract implementation of a Handler.
Definition: Handler.php:15
static addDataToNode(\SimpleXMLElement $node, $data)
static toXml($data)
The main function for converting to an XML document.