diff options
author | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-23 08:36:18 +0400 |
---|---|---|
committer | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-23 08:36:36 +0400 |
commit | 7f48059f52b807b4e8d2d05ff70279c94e626cc6 (patch) | |
tree | 25a544de71ab15647c9c419e70d08128d7e58a2a /core | |
parent | 54a5d4c57466a3811b6aba39d8cc2c4d79ee18bc (diff) |
Make sure all calls to Piwik_ExitWithMessage provide backtrace if available, and only print the backtrace if PIWIK_PRINT_ERROR_BACKTRACE is defined. Modified archive cron test to print backtrace if request made by archive cron test fails.
Diffstat (limited to 'core')
-rw-r--r-- | core/API/ResponseBuilder.php | 4 | ||||
-rw-r--r-- | core/Controller.php | 2 | ||||
-rw-r--r-- | core/DataTable/Renderer.php | 10 | ||||
-rw-r--r-- | core/FrontController.php | 4 | ||||
-rw-r--r-- | core/testMinimumPhpVersion.php | 15 |
5 files changed, 25 insertions, 10 deletions
diff --git a/core/API/ResponseBuilder.php b/core/API/ResponseBuilder.php index 10c3a00132..87da4a0b32 100644 --- a/core/API/ResponseBuilder.php +++ b/core/API/ResponseBuilder.php @@ -155,7 +155,9 @@ class ResponseBuilder { // If we are in tests, show full backtrace if (defined('PIWIK_PATH_TEST_TO_ROOT')) { - if (self::DISPLAY_BACKTRACE_DEBUG) { + if (self::DISPLAY_BACKTRACE_DEBUG + || Piwik_ShouldPrintBackTraceWithMessage() + ) { $message = $e->getMessage() . " in \n " . $e->getFile() . ":" . $e->getLine() . " \n " . $e->getTraceAsString(); } else { $message = $e->getMessage() . "\n \n --> To temporarily debug this error further, set const DISPLAY_BACKTRACE_DEBUG=true; in " . basename(__FILE__); diff --git a/core/Controller.php b/core/Controller.php index 78f20aad42..7837bdd4ca 100644 --- a/core/Controller.php +++ b/core/Controller.php @@ -425,7 +425,7 @@ abstract class Controller $view->topMenu = Piwik_GetTopMenu(); } catch (Exception $e) { - Piwik_ExitWithMessage($e->getMessage(), '' /* $e->getTraceAsString() */); + Piwik_ExitWithMessage($e->getMessage(), $e->getTraceAsString()); } } diff --git a/core/DataTable/Renderer.php b/core/DataTable/Renderer.php index d62514c1f4..fe70f9e28f 100644 --- a/core/DataTable/Renderer.php +++ b/core/DataTable/Renderer.php @@ -125,11 +125,11 @@ abstract class Renderer protected function getExceptionMessage() { - $message = self::renderHtmlEntities($this->exception->getMessage()); - - // DEBUG -// $message .= $this->exception->getTraceAsString(); - return $message; + $message = $this->exception->getMessage(); + if (Piwik_ShouldPrintBackTraceWithMessage()) { + $message .= "\n" . $this->exception->getTraceAsString(); + } + return self::renderHtmlEntities($message); } /** diff --git a/core/FrontController.php b/core/FrontController.php index 21032df160..d56991af11 100644 --- a/core/FrontController.php +++ b/core/FrontController.php @@ -129,7 +129,7 @@ class FrontController } catch (Exception $e) { $debugTrace = $e->getTraceAsString(); $message = Common::sanitizeInputValue($e->getMessage()); - Piwik_ExitWithMessage($message, '' /* $debugTrace */, true); + Piwik_ExitWithMessage($message, $debugTrace, true); } } @@ -311,7 +311,7 @@ class FrontController } $trace = $e->getTraceAsString(); - Piwik_ExitWithMessage($e->getMessage(), false /* $debugTrace */, true); + Piwik_ExitWithMessage($e->getMessage(), $debugTrace, true); } } diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php index 36ee1d183b..840eda9bed 100644 --- a/core/testMinimumPhpVersion.php +++ b/core/testMinimumPhpVersion.php @@ -68,6 +68,18 @@ if ($minimumPhpInvalid) { if (!function_exists('Piwik_ExitWithMessage')) { /** + * Returns true if Piwik should print the backtrace with error messages. + * + * To make sure the backtrace is printed, define PIWIK_PRINT_ERROR_BACKTRACE. + * + * @return bool + */ + function Piwik_ShouldPrintBackTraceWithMessage() + { + return defined('PIWIK_PRINT_ERROR_BACKTRACE'); + } + + /** * Displays info/warning/error message in a friendly UI and exits. * * @param string $message Main message, must be html encoded before calling @@ -103,7 +115,8 @@ if (!function_exists('Piwik_ExitWithMessage')) { . '<a href="index.php">Go to Piwik</a><br/> <a href="index.php?module=Login">Login</a>' . '</p>' - . ' ' . $optionalTrace . ' ' . $optionalLinks; + . ' ' . (Piwik_ShouldPrintBackTraceWithMessage() ? $optionalTrace : '') + . ' ' . $optionalLinks; echo $headerPage . $content . $footerPage; exit; |