/** * @param array $event */ public function _write($event) { $debugbar = DebugBar::getDebugBar(); if (!$debugbar) { return; } /* @var $messagesCollector DebugBar\DataCollector\MessagesCollector */ $messagesCollector = $debugbar['messages']; if (!$messagesCollector) { return; } $level = $event['priorityName']; // Gather info if (isset($event['message']['errstr'])) { $str = $event['message']['errstr']; $file = $event['message']['errfile']; $line = $event['message']['errline']; } else { $str = $event['message']['function']; $file = $event['message']['file']; $line = isset($event['message']['line']) ? $event['message']['line'] : 0; } $relfile = Director::makeRelative($file); // Save message $message = "{$level} - {$str} ({$relfile}:{$line})"; // Escape \ for proper js display $message = str_replace('\\', '\\\\', $message); $messagesCollector->addMessage($message, false); }
public function index(SS_HTTPRequest $request) { if (!DebugBar::config()->enable_storage) { return $this->httpError(404, 'Storage not enabled'); } $debugbar = DebugBar::getDebugBar(); if (!$debugbar) { return $this->httpError(404, 'DebugBar not enabled'); } $openHandler = new DebugBar\OpenHandler($debugbar); $openHandler->handle(); exit; // Handle will echo and set headers }
/** * Filter executed AFTER a request * * @param SS_HTTPRequest $request Request container object * @param SS_HTTPResponse $response Response output object * @param DataModel $model Current DataModel * @return boolean Whether to continue processing other filters. Null or true will continue processing (optional) */ public function postRequest(SS_HTTPRequest $request, SS_HTTPResponse $response, DataModel $model) { $debugbar = DebugBar::getDebugBar(); if (!$debugbar) { return; } // All queries have been displayed if (DebugBar::getShowQueries()) { exit; } $script = DebugBar::renderDebugBar(); // If the bar is not renderable, return early if (!$script) { return; } // Inject init script into the HTML response $body = $response->getBody(); if (strpos($body, '</body>') !== false) { $body = str_replace('</body>', $script . '</body>', $body); $response->setBody($body); } // Ajax support if (Director::is_ajax() && !headers_sent()) { if (DebugBar::IsAdminUrl() && !DebugBar::config()->enabled_in_admin) { return; } // Skip anything that is not a GET request if (!$request->isGET()) { return; } // Always enable in admin because everything is mostly loaded through ajax if (DebugBar::config()->ajax || DebugBar::IsAdminUrl()) { $headers = $debugbar->getDataAsHeaders(); // Prevent throwing js errors in case header size is too large if (is_array($headers)) { $debugbar->sendDataInHeaders(); } } } }