From 079a566f690e518ec1332a8af451124bfdf52131 Mon Sep 17 00:00:00 2001 From: Jan Dolecek Date: Sat, 6 Oct 2012 11:06:50 +0200 Subject: [PATCH] WIP: Debugger: store debug bars in ajax requests They can be retrieved by a subsequent request --- Nette/Diagnostics/Bar.php | 9 +++++++++ Nette/Diagnostics/Debugger.php | 25 ++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/Nette/Diagnostics/Bar.php b/Nette/Diagnostics/Bar.php index 5596d241d3..b93da2ddb2 100644 --- a/Nette/Diagnostics/Bar.php +++ b/Nette/Diagnostics/Bar.php @@ -109,4 +109,13 @@ public function render() require __DIR__ . '/templates/bar.phtml'; } + + + public function __toString() + { + ob_start(); + $this->render(); + return ob_get_clean(); + } + } diff --git a/Nette/Diagnostics/Debugger.php b/Nette/Diagnostics/Debugger.php index 3e2d193575..ea975ff52a 100644 --- a/Nette/Diagnostics/Debugger.php +++ b/Nette/Diagnostics/Debugger.php @@ -117,6 +117,9 @@ final class Debugger /** @deprecated */ public static $emailSnooze; + /** @var string */ + public static $intermediateDebugFile; + /********************* debug bar ****************d*g**/ /** @var Bar */ @@ -254,6 +257,16 @@ public static function enable($mode = NULL, $logDirectory = NULL, $email = NULL) if (self::$logDirectory) { ini_set('error_log', self::$logDirectory . '/php_error.log'); } + if (isset($_SERVER['HTTP_NETTE_DEBUG_HELPER'])) { + $dir = TEMP_DIR . '/_Nette.DebugHelper'; + if (!file_exists($dir)) { + mkdir($dir); + } + self::$intermediateDebugFile = tempnam($dir, $_SERVER['HTTP_NETTE_DEBUG_HELPER']); + if (!headers_sent()) { + header("Nette-Debug-Nonce: " . basename(self::$intermediateDebugFile)); + } + } // php configuration if (function_exists('ini_set')) { @@ -374,9 +387,15 @@ public static function _shutdownHandler() self::_exceptionHandler(new Nette\FatalErrorException($error['message'], 0, $error['type'], $error['file'], $error['line'], NULL, NULL, isset($error['trace']) ? $error['trace'] : NULL)); } - // debug bar (require HTML & development mode) - if (!connection_aborted() && self::$bar && !self::$productionMode && self::isHtmlMode()) { - self::$bar->render(); + // debug bar (requires development mode) + if (!connection_aborted() && self::$bar && !self::$productionMode) { + if(self::isHtmlMode()) { + self::$bar->render(); + + } elseif (self::$intermediateDebugFile) { + file_put_contents(self::$intermediateDebugFile, self::$bar->__toString()); + @chmod(self::$intermediateDebugFile, 0666); + } } }