X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a6633642232efd164d4708967ab59e498fbff896..refs/pull/3850/head:/app/Http/Controllers/AuditLogController.php diff --git a/app/Http/Controllers/AuditLogController.php b/app/Http/Controllers/AuditLogController.php index eb6eecc94..da8009d78 100644 --- a/app/Http/Controllers/AuditLogController.php +++ b/app/Http/Controllers/AuditLogController.php @@ -3,53 +3,67 @@ namespace BookStack\Http\Controllers; use BookStack\Actions\Activity; +use BookStack\Actions\ActivityType; +use BookStack\Util\SimpleListOptions; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class AuditLogController extends Controller { - public function index(Request $request) { $this->checkPermission('settings-manage'); $this->checkPermission('users-manage'); - $listDetails = [ - 'order' => $request->get('order', 'desc'), - 'event' => $request->get('event', ''), - 'sort' => $request->get('sort', 'created_at'), + $sort = $request->get('sort', 'activity_date'); + $order = $request->get('order', 'desc'); + $listOptions = (new SimpleListOptions('', $sort, $order))->withSortOptions([ + 'created_at' => trans('settings.audit_table_date'), + 'type' => trans('settings.audit_table_event'), + ]); + + $filters = [ + 'event' => $request->get('event', ''), 'date_from' => $request->get('date_from', ''), - 'date_to' => $request->get('date_to', ''), + 'date_to' => $request->get('date_to', ''), + 'user' => $request->get('user', ''), + 'ip' => $request->get('ip', ''), ]; $query = Activity::query() ->with([ - 'entity' => function ($query) { - $query->withTrashed(); - }, - 'user' + 'entity' => fn ($query) => $query->withTrashed(), + 'user', ]) - ->orderBy($listDetails['sort'], $listDetails['order']); + ->orderBy($listOptions->getSort(), $listOptions->getOrder()); - if ($listDetails['event']) { - $query->where('type', '=', $listDetails['event']); + if ($filters['event']) { + $query->where('type', '=', $filters['event']); + } + if ($filters['user']) { + $query->where('user_id', '=', $filters['user']); } - if ($listDetails['date_from']) { - $query->where('created_at', '>=', $listDetails['date_from']); + if ($filters['date_from']) { + $query->where('created_at', '>=', $filters['date_from']); + } + if ($filters['date_to']) { + $query->where('created_at', '<=', $filters['date_to']); } - if ($listDetails['date_to']) { - $query->where('created_at', '<=', $listDetails['date_to']); + if ($filters['ip']) { + $query->where('ip', 'like', $filters['ip'] . '%'); } $activities = $query->paginate(100); - $activities->appends($listDetails); + $activities->appends($request->all()); - $types = DB::table('activities')->select('type')->distinct()->pluck('type'); + $types = ActivityType::all(); $this->setPageTitle(trans('settings.audit')); + return view('settings.audit', [ - 'activities' => $activities, - 'listDetails' => $listDetails, + 'activities' => $activities, + 'filters' => $filters, + 'listOptions' => $listOptions, 'activityTypes' => $types, ]); }