public function onKernelException(GetResponseForExceptionEvent $event)
{
if ($this->container->get('jarves.page_stack')->isAdmin()) {
$exception = $event->getException();
$statusCode = $exception instanceof HttpExceptionInterface ? $exception->getStatusCode() : 500;
$view = ['status' => $statusCode, 'error' => get_class($event->getException()), 'message' => $event->getException()->getMessage()];
if ($exception instanceof RestException) {
$view['data'] = $exception->getData();
}
$previous = $exception;
while ($previous = $previous->getPrevious()) {
$prev = array('error' => get_class($previous), 'message' => $previous->getMessage());
if ($this->container->get('kernel')->isDebug()) {
$trace = Tools::getArrayTrace($previous);
$prev['file'] = $previous->getFile();
$prev['line'] = $previous->getLine();
$prev['trace'] = $trace;
}
$view['previous'][] = $prev;
}
if ($this->container->get('kernel')->isDebug()) {
$trace = Tools::getArrayTrace($event->getException());
$view['file'] = $event->getException()->getFile();
$view['line'] = $event->getException()->getLine();
$view['trace'] = $trace;
}
$response = new Response(json_encode($view, JSON_PRETTY_PRINT));
$response->headers->set('Content-Type', 'application/json');
$event->setResponse($response);
//why does the kernel send a 500 statusCode ?
}
}