isGet() && ! $request->isAjax() && (! isset($_GET['debugbar']) || ! empty($_GET['debugbar'])); if ($load_debugbar) { $debugbar = new StandardDebugBar(); App::setData('debugbar', $debugbar); $debugbar->addCollector(new KarmaFwCollector); $debugbar->addCollector(new ConfigCollector); $debugbar->addCollector(new SqlDbCollector); $debugbar->addCollector(new SqlDbTimelineCollector); $debugbar->addCollector(new KarmaMessagesCollector('templates')); $debugbar->addCollector(new SEOCollector); $debugbarRenderer = $debugbar->getJavascriptRenderer('/assets/vendor/debugbar'); // symlink to ${APP_DIR}/vendor/maximebf/debugbar/src/DebugBar/Resources } $response = $next($request, $response); $is_html = (empty($response->getContentType()) || strpos($response->getContentType(), 'text/html') === 0); $show_debugbar = ($load_debugbar && $is_html && $response->getStatus() == 200); if ($show_debugbar) { // config $constants = get_defined_constants(true); $debugbar['config']->setData($constants['user']); // KarmaFW if (isset($debugbar['KarmaFW'])) { $data = [ 'app' => App::getData('app'), 'request' => $request, 'response' => $response, ]; $debugbar['KarmaFW']->setData($data); } // SEO if (isset($debugbar['SEO'])) { $seo_data = $this->seoParseContent($response); $debugbar['SEO']->setData($seo_data); } $response->append( $debugbarRenderer->renderHead() ); // TODO: $response->injectAppendTo('head', $debugbarRenderer->renderHead()) // => function injectAppendTo($tag) { $body = preg_replace('|'.$tag.'>|', $injected_html . ''.$tag.'>', $body, 1); $response->append( $debugbarRenderer->render() ); // TODO: injectAppendTo('body', $debugbarRenderer->render()) $response->addHeader('X-DebugBar', 'on'); } else { $response->addHeader('X-DebugBar', 'off'); } return $response; } protected function seoParseContent(Response $response) { $content = $response->getBody(); preg_match('~