]> BookStack Code Mirror - bookstack/blob - app/Http/Controllers/AuditLogController.php
Split out settings view and made functional
[bookstack] / app / Http / Controllers / AuditLogController.php
1 <?php
2
3 namespace BookStack\Http\Controllers;
4
5 use BookStack\Actions\Activity;
6 use Illuminate\Http\Request;
7 use Illuminate\Support\Facades\DB;
8
9 class AuditLogController extends Controller
10 {
11     public function index(Request $request)
12     {
13         $this->checkPermission('settings-manage');
14         $this->checkPermission('users-manage');
15
16         $listDetails = [
17             'order'     => $request->get('order', 'desc'),
18             'event'     => $request->get('event', ''),
19             'sort'      => $request->get('sort', 'created_at'),
20             'date_from' => $request->get('date_from', ''),
21             'date_to'   => $request->get('date_to', ''),
22             'user'      => $request->get('user', ''),
23             'ip'        => $request->get('ip', ''),
24         ];
25
26         $query = Activity::query()
27             ->with([
28                 'entity' => function ($query) {
29                     $query->withTrashed();
30                 },
31                 'user',
32             ])
33             ->orderBy($listDetails['sort'], $listDetails['order']);
34
35         if ($listDetails['event']) {
36             $query->where('type', '=', $listDetails['event']);
37         }
38         if ($listDetails['user']) {
39             $query->where('user_id', '=', $listDetails['user']);
40         }
41
42         if ($listDetails['date_from']) {
43             $query->where('created_at', '>=', $listDetails['date_from']);
44         }
45         if ($listDetails['date_to']) {
46             $query->where('created_at', '<=', $listDetails['date_to']);
47         }
48         if ($listDetails['ip']) {
49             $query->where('ip', 'like', $listDetails['ip'] . '%');
50         }
51
52         $activities = $query->paginate(100);
53         $activities->appends($listDetails);
54
55         $types = DB::table('activities')->select('type')->distinct()->pluck('type');
56         $this->setPageTitle(trans('settings.audit'));
57
58         return view('settings.audit', [
59             'activities'    => $activities,
60             'listDetails'   => $listDetails,
61             'activityTypes' => $types,
62         ]);
63     }
64 }