73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace BookStack\Activity\Controllers;
 | 
						|
 | 
						|
use BookStack\Activity\ActivityType;
 | 
						|
use BookStack\Activity\Models\Activity;
 | 
						|
use BookStack\Http\Controller;
 | 
						|
use BookStack\Sorting\SortUrl;
 | 
						|
use BookStack\Util\SimpleListOptions;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
 | 
						|
class AuditLogController extends Controller
 | 
						|
{
 | 
						|
    public function index(Request $request)
 | 
						|
    {
 | 
						|
        $this->checkPermission('settings-manage');
 | 
						|
        $this->checkPermission('users-manage');
 | 
						|
 | 
						|
        $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', ''),
 | 
						|
            'user'      => $request->get('user', ''),
 | 
						|
            'ip'        => $request->get('ip', ''),
 | 
						|
        ];
 | 
						|
 | 
						|
        $query = Activity::query()
 | 
						|
            ->with([
 | 
						|
                'loggable' => fn ($query) => $query->withTrashed(),
 | 
						|
                'user',
 | 
						|
            ])
 | 
						|
            ->orderBy($listOptions->getSort(), $listOptions->getOrder());
 | 
						|
 | 
						|
        if ($filters['event']) {
 | 
						|
            $query->where('type', '=', $filters['event']);
 | 
						|
        }
 | 
						|
        if ($filters['user']) {
 | 
						|
            $query->where('user_id', '=', $filters['user']);
 | 
						|
        }
 | 
						|
 | 
						|
        if ($filters['date_from']) {
 | 
						|
            $query->where('created_at', '>=', $filters['date_from']);
 | 
						|
        }
 | 
						|
        if ($filters['date_to']) {
 | 
						|
            $query->where('created_at', '<=', $filters['date_to']);
 | 
						|
        }
 | 
						|
        if ($filters['ip']) {
 | 
						|
            $query->where('ip', 'like', $filters['ip'] . '%');
 | 
						|
        }
 | 
						|
 | 
						|
        $activities = $query->paginate(100);
 | 
						|
        $activities->appends($request->all());
 | 
						|
 | 
						|
        $types = ActivityType::all();
 | 
						|
        $this->setPageTitle(trans('settings.audit'));
 | 
						|
 | 
						|
        return view('settings.audit', [
 | 
						|
            'activities'    => $activities,
 | 
						|
            'filters'       => $filters,
 | 
						|
            'listOptions'   => $listOptions,
 | 
						|
            'activityTypes' => $types,
 | 
						|
            'filterSortUrl' => new SortUrl('settings/audit', array_filter($request->except('page')))
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
}
 |