-
Notifications
You must be signed in to change notification settings - Fork 0
/
LastEdited.php
40 lines (37 loc) · 1.82 KB
/
LastEdited.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
namespace Icodemx\Tracelog\Classes;
use Backend\Facades\BackendAuth;
use Icodemx\Tracelog\Models\Log;
trait LastEdited
{
public static function bootLastEdited()
{
static::extend(function ($model) {
$model->morphMany['logs'] = ['Icodemx\Tracelog\Models\Log', 'name' => 'traceable'];
if (BackendAuth::getUser() && \App::runningInBackend()) {
$user = BackendAuth::getUser()->login . ': ' . BackendAuth::getUser()->first_name . ' ' . BackendAuth::getUser()->last_name;
$model->bindEvent('model.afterSave', function () use ($model, $user) {
$log = new Log();
$log->user = BackendAuth::getUser();
$log->userfallback = $user;
$log->msg = (isset($model->message)) ? $model->message : 'Updated';
$log->reference = (isset($model->referenceLog)) ? $model->{$model->referenceLog} : '';
$model->logs()->save($log);
}, 500);
$model->bindEvent('model.afterDelete', function () use ($model, $user) {
$log = new Log();
$log->user = BackendAuth::getUser();
$log->userfallback = $user;
$log->msg = (isset($model->message)) ? $model->message : 'Deleted';
$log->reference = (isset($model->referenceLog)) ? $model->{$model->referenceLog} : '';
$model->logs()->save($log);
}, 500);
}
});
}
public function getLogsAttribute()
{
$lastEdition = $this->logs()->orderBy('created_at', 'desc')->first();
return ($lastEdition && is_object($lastEdition->user)) ? $lastEdition->user->first_name . ' ' . $lastEdition->user->last_name . ' > ' . $lastEdition->created_at : '';
}
}