diff --git a/modules/system/ServiceProvider.php b/modules/system/ServiceProvider.php index daf35b463..97a4761dd 100644 --- a/modules/system/ServiceProvider.php +++ b/modules/system/ServiceProvider.php @@ -82,7 +82,7 @@ class ServiceProvider extends ModuleServiceProvider if (!DbDongle::hasDatabase()) return; - EventLog::add($message, $level, json_encode($context)); + EventLog::add($message, $level); }); /* diff --git a/modules/system/controllers/requestlogs/_referer.htm b/modules/system/controllers/requestlogs/_referer.htm new file mode 100644 index 000000000..30ee9ab50 --- /dev/null +++ b/modules/system/controllers/requestlogs/_referer.htm @@ -0,0 +1,9 @@ +referer) > 0): ?> + + +

There were no detected referers to this URL.

+ \ No newline at end of file diff --git a/modules/system/database/migrations/2014_10_01_000012_Db_System_Request_Logs.php b/modules/system/database/migrations/2014_10_01_000012_Db_System_Request_Logs.php index 0e4c33fd2..e47a79543 100644 --- a/modules/system/database/migrations/2014_10_01_000012_Db_System_Request_Logs.php +++ b/modules/system/database/migrations/2014_10_01_000012_Db_System_Request_Logs.php @@ -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(); }); diff --git a/modules/system/lang/en/lang.php b/modules/system/lang/en/lang.php index 5beae38ac..9c83eaf8b 100644 --- a/modules/system/lang/en/lang.php +++ b/modules/system/lang/en/lang.php @@ -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', ], diff --git a/modules/system/models/RequestLog.php b/modules/system/models/RequestLog.php index afe948a78..8f120ee7b 100644 --- a/modules/system/models/RequestLog.php +++ b/modules/system/models/RequestLog.php @@ -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(); diff --git a/modules/system/models/requestlog/columns.yaml b/modules/system/models/requestlog/columns.yaml index 5f2c75415..9e29e714f 100644 --- a/modules/system/models/requestlog/columns.yaml +++ b/modules/system/models/requestlog/columns.yaml @@ -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 diff --git a/modules/system/models/requestlog/fields.yaml b/modules/system/models/requestlog/fields.yaml index 1fbaddad0..325a2b7d8 100644 --- a/modules/system/models/requestlog/fields.yaml +++ b/modules/system/models/requestlog/fields.yaml @@ -17,3 +17,4 @@ fields: referer: label: system::lang.request_log.referer + type: partial \ No newline at end of file