Use a smarter approach to logging request referers

This commit is contained in:
Sam Georges 2014-07-30 18:24:16 +10:00
parent 33e6edf5c5
commit 8a246a8193
7 changed files with 24 additions and 8 deletions

View File

@ -82,7 +82,7 @@ class ServiceProvider extends ModuleServiceProvider
if (!DbDongle::hasDatabase())
return;
EventLog::add($message, $level, json_encode($context));
EventLog::add($message, $level);
});
/*

View File

@ -0,0 +1,9 @@
<?php if (count($formModel->referer) > 0): ?>
<ul>
<?php foreach ($formModel->referer as $referer): ?>
<li><?= $referer ?></li>
<?php endforeach ?>
</ul>
<?php else: ?>
<p><em>There were no detected referers to this URL.</em></p>
<?php endif ?>

View File

@ -14,7 +14,7 @@ class DbSystemRequestLogs extends Migration
$table->increments('id');
$table->string('url')->nullable();
$table->integer('status_code')->nullable();
$table->string('referer')->nullable();
$table->text('referer')->nullable();
$table->integer('count')->default(0);
$table->timestamps();
});

View File

@ -198,7 +198,7 @@ return [
'empty_success' => 'Successfully emptied the request log.',
'return_link' => 'Return to request log',
'count' => 'Counter',
'referer' => 'Referer',
'referer' => 'Referers',
'url' => 'URL',
'status_code' => 'Status',
],

View File

@ -19,6 +19,11 @@ class RequestLog extends Model
*/
protected $guarded = [];
/**
* @var array List of attribute names which are json encoded and decoded from the database.
*/
protected $jsonable = ['referer'];
/**
* Creates a log record
* @return self
@ -27,10 +32,15 @@ class RequestLog extends Model
{
$record = static::firstOrNew([
'url' => Request::fullUrl(),
'referer' => Request::header('referer'),
'status_code' => $statusCode,
]);
if ($referer = Request::header('referer')) {
$referers = (array) $record->referer ?: [];
$referers[] = $referer;
$record->referer = $referers;
}
if (!$record->exists) {
$record->count = 1;
$record->save();

View File

@ -11,9 +11,5 @@ columns:
label: system::lang.request_log.url
searchable: yes
referer:
label: system::lang.request_log.referer
searchable: yes
count:
label: system::lang.request_log.count

View File

@ -17,3 +17,4 @@ fields:
referer:
label: system::lang.request_log.referer
type: partial