Laravel version update

Laravel version update
This commit is contained in:
Manish Verma
2018-08-06 18:48:58 +05:30
parent d143048413
commit 126fbb0255
13678 changed files with 1031482 additions and 778530 deletions

View File

@@ -22,6 +22,7 @@ use DebugBar\DataCollector\MessagesCollector;
use DebugBar\DataCollector\PhpInfoCollector;
use DebugBar\DataCollector\RequestDataCollector;
use DebugBar\DataCollector\TimeDataCollector;
use Barryvdh\Debugbar\DataFormatter\QueryFormatter;
use Barryvdh\Debugbar\Support\Clockwork\ClockworkCollector;
use DebugBar\DebugBar;
use DebugBar\Storage\PdoStorage;
@@ -123,6 +124,11 @@ class LaravelDebugbar extends DebugBar
/** @var Application $app */
$app = $this->app;
// Set custom error handler
if ($app['config']->get('debugbar.error_handler' , false)) {
set_error_handler([$this, 'handleError']);
}
$this->selectStorage($debugbar);
@@ -198,7 +204,10 @@ class LaravelDebugbar extends DebugBar
$this->addCollector(new ViewCollector($collectData));
$this->app['events']->listen(
'composing:*',
function ($view) use ($debugbar) {
function ($view, $data = []) use ($debugbar) {
if ($data) {
$view = $data[0]; // For Laravel >= 5.4
}
$debugbar['views']->addView($view);
}
);
@@ -231,7 +240,16 @@ class LaravelDebugbar extends DebugBar
$logger = new MessagesCollector('log');
$this['messages']->aggregate($logger);
$this->app['log']->listen(
function ($level, $message, $context) use ($logger) {
function ($level, $message = null, $context = null) use ($logger) {
// Laravel 5.4 changed how the global log listeners are called. We must account for
// the first argument being an "event object", where arguments are passed
// via object properties, instead of individual arguments.
if ($level instanceof \Illuminate\Log\Events\MessageLogged) {
$message = $level->message;
$context = $level->context;
$level = $level->level;
}
try {
$logMessage = (string) $message;
if (mb_check_encoding($logMessage, 'UTF-8')) {
@@ -274,12 +292,15 @@ class LaravelDebugbar extends DebugBar
}
$queryCollector = new QueryCollector($timeCollector);
$queryCollector->setDataFormatter(new QueryFormatter());
if ($this->app['config']->get('debugbar.options.db.with_params')) {
$queryCollector->setRenderSqlWithParams(true);
}
if ($this->app['config']->get('debugbar.options.db.backtrace')) {
$queryCollector->setFindSource(true);
$middleware = ! $this->is_lumen ? $this->app['router']->getMiddleware() : [];
$queryCollector->setFindSource(true, $middleware);
}
if ($this->app['config']->get('debugbar.options.db.explain.enabled')) {
@@ -321,6 +342,61 @@ class LaravelDebugbar extends DebugBar
)
);
}
try {
$db->getEventDispatcher()->listen([
\Illuminate\Database\Events\TransactionBeginning::class,
'connection.*.beganTransaction',
], function ($transaction) use ($queryCollector) {
// Laravel 5.2 changed the way some core events worked. We must account for
// the first argument being an "event object", where arguments are passed
// via object properties, instead of individual arguments.
if($transaction instanceof \Illuminate\Database\Events\TransactionBeginning) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
}
$queryCollector->collectTransactionEvent('Begin Transaction', $connection);
});
$db->getEventDispatcher()->listen([
\Illuminate\Database\Events\TransactionCommitted::class,
'connection.*.committed',
], function ($transaction) use ($queryCollector) {
if($transaction instanceof \Illuminate\Database\Events\TransactionCommitted) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
}
$queryCollector->collectTransactionEvent('Commit Transaction', $connection);
});
$db->getEventDispatcher()->listen([
\Illuminate\Database\Events\TransactionRolledBack::class,
'connection.*.rollingBack',
], function ($transaction) use ($queryCollector) {
if($transaction instanceof \Illuminate\Database\Events\TransactionRolledBack) {
$connection = $transaction->connection;
} else {
$connection = $transaction;
}
$queryCollector->collectTransactionEvent('Rollback Transaction', $connection);
});
} catch (\Exception $e) {
$this->addThrowable(
new Exception(
'Cannot add listen transactions to Queries for Laravel Debugbar: ' . $e->getMessage(),
$e->getCode(),
$e
)
);
}
}
if ($this->shouldCollect('mail', true) && class_exists('Illuminate\Mail\MailServiceProvider')) {
@@ -402,6 +478,25 @@ class LaravelDebugbar extends DebugBar
return $this->app['config']->get('debugbar.collectors.' . $name, $default);
}
/**
* Handle silenced errors
*
* @param $level
* @param $message
* @param string $file
* @param int $line
* @param array $context
* @throws \ErrorException
*/
public function handleError($level, $message, $file = '', $line = 0, $context = [])
{
if (error_reporting() & $level) {
throw new \ErrorException($message, 0, $level, $file, $line);
} else {
$this->addMessage($message, 'deprecation');
}
}
/**
* Starts a measure
*
@@ -577,6 +672,11 @@ class LaravelDebugbar extends DebugBar
) {
try {
$this->sendDataInHeaders(true);
if ($app['config']->get('debugbar.add_ajax_timing', false)) {
$this->addServerTimingHeaders($response);
}
} catch (\Exception $e) {
$app['log']->error('Debugbar exception: ' . $e->getMessage());
}
@@ -584,6 +684,7 @@ class LaravelDebugbar extends DebugBar
($response->headers->has('Content-Type') &&
strpos($response->headers->get('Content-Type'), 'html') === false)
|| $request->getRequestFormat() !== 'html'
|| $response->getContent() === false
) {
try {
// Just collect + store data, don't inject it.
@@ -599,6 +700,8 @@ class LaravelDebugbar extends DebugBar
}
}
return $response;
}
@@ -866,7 +969,11 @@ class LaravelDebugbar extends DebugBar
break;
case 'redis':
$connection = $config->get('debugbar.storage.connection');
$storage = new RedisStorage($this->app['redis']->connection($connection));
$client = $this->app['redis']->connection($connection);
if (is_a($client, 'Illuminate\Redis\Connections\PredisConnection', false)) {
$client = $client->client();
}
$storage = new RedisStorage($client);
break;
case 'custom':
$class = $config->get('debugbar.storage.provider');
@@ -890,4 +997,24 @@ class LaravelDebugbar extends DebugBar
$response->headers->set('X-Clockwork-Version', 1, true);
$response->headers->set('X-Clockwork-Path', $prefix .'/clockwork/', true);
}
/**
* Add Server-Timing headers for the TimeData collector
*
* @see https://www.w3.org/TR/server-timing/
* @param Response $response
*/
protected function addServerTimingHeaders(Response $response)
{
if ($this->hasCollector('time')) {
$collector = $this->getCollector('time');
$headers = [];
foreach ($collector->collect()['measures'] as $k => $m) {
$headers[] = sprintf('%d=%F; "%s"', $k, $m['duration'], str_replace('"', "'", $m['label']));
}
$response->headers->set('Server-Timing', $headers, false);
}
}
}