public function afterDispatch(Event $event)
{
/* @var Request $request */
$request = $event->data['request'];
// Skip debugkit requests and requestAction()
if ($request->param('plugin') === 'DebugKit' || $request->is('requested')) {
return;
}
/* @var Response $response */
$response = $event->data['response'];
$data = ['url' => $request->here(), 'content_type' => $response->type(), 'method' => $request->method(), 'status_code' => $response->statusCode(), 'requested_at' => $request->env('REQUEST_TIME'), 'panels' => []];
/* @var \DebugKit\Model\Table\RequestsTable $requests */
$requests = TableRegistry::get('DebugKit.Requests');
$requests->gc();
$row = $requests->newEntity($data);
$row->isNew(true);
foreach ($this->_registry->loaded() as $name) {
$panel = $this->_registry->{$name};
try {
$content = serialize($panel->data());
} catch (\Exception $e) {
$content = serialize(['error' => $e->getMessage()]);
}
$row->panels[] = $requests->Panels->newEntity(['panel' => $name, 'element' => $panel->elementName(), 'title' => $panel->title(), 'summary' => $panel->summary(), 'content' => $content]);
}
$row = $requests->save($row);
$this->_injectScripts($row->id, $response);
$response->header(['X-DEBUGKIT-ID' => $row->id]);
}