X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/2ef6650cb5125638bf482a78adb7edd0522eaf8a..57198b462928673e15458d19756577f5f83e56bf:/Controller/ErrorController.php

diff --git a/Controller/ErrorController.php b/Controller/ErrorController.php
index eb53209..72e108f 100644
--- a/Controller/ErrorController.php
+++ b/Controller/ErrorController.php
@@ -18,18 +18,47 @@ class ErrorController extends DefaultController {
 	/**
 	 * {@inheritdoc}
 	 */
-	public function preview(Request $request, FlattenException $exception) {
+	public function show(Request $request, FlattenException $exception) {
 		//Set section
 		$section = $exception->getStatusCode().' '.$this->translator->trans($exception->getStatusText());
 
 		//Set title
-		$title = $section.' - '.$this->translator->trans($this->config['site']['title']);
+		$title = $this->translator->trans($this->config['site']['title']).' - '.$section;
 
 		//Set the message
 		$message = $exception->getMessage();
 
-		//Set the trace
-		$trace = $exception->getAsString();
+		//Init trace
+		$trace = null;
+
+		//Prevent non admin access to trace
+		if ($this->isGranted('ROLE_ADMIN')) {
+			//Set project dir
+			$projectDir = $this->container->getParameter('kernel.project_dir').'/';
+
+			//Set the trace
+			//$trace = $exception->getAsString();
+			$trace = '';
+
+			//Iterate on array
+			foreach($exception->toArray() as $current) {
+				$trace .= $current['class'];
+
+				if (!empty($current['message'])) {
+					$trace .= ': '.$current['message'];
+				}
+
+				if (!empty($current['trace'])) {
+					foreach($current['trace'] as $id => $sub) {
+						$trace .= "\n".'#'.$id.' '.$sub['class'].$sub['type'].$sub['function'];
+						if (!empty($sub['args'])) {
+							$trace .= '('.implode(', ', array_map(function($v){return $v[0].' '.$v[1];}, $sub['args'])).')';
+						}
+						$trace .= ' in '.str_replace($projectDir, '', $sub['file']).':'.$sub['line'];
+					}
+				}
+			}
+		}
 
 		//Render template
 		return $this->render(