. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Table; use App\Models\Syslog; use Illuminate\Database\Eloquent\Builder; class SyslogController extends TableController { public function rules() { return [ 'device' => 'nullable|int', 'device_group' => 'nullable|int', 'program' => 'nullable|string', 'priority' => 'nullable|string', 'to' => 'nullable|date', 'from' => 'nullable|date', ]; } public function searchFields($request) { return ['msg']; } public function filterFields($request) { return [ 'device_id' => 'device', 'program' => 'program', 'priority' => 'priority', ]; } /** * Defines the base query for this resource * * @param \Illuminate\Http\Request $request * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder */ public function baseQuery($request) { /** @var Builder $query */ return Syslog::hasAccess($request->user()) ->with('device') ->when($request->device_group, function ($query) use ($request) { $query->inDeviceGroup($request->device_group); }) ->when($request->from, function ($query) use ($request) { $query->where('timestamp', '>=', $request->from); }) ->when($request->to, function ($query) use ($request) { $query->where('timestamp', '<=', $request->to); }); } public function formatItem($syslog) { $device = $syslog->device; return [ 'timestamp' => $syslog->timestamp, 'level' => htmlentities($syslog->level), 'device_id' => $device ? \LibreNMS\Util\Url::deviceLink($device, $device->shortDisplayName()) : '', 'program' => htmlentities($syslog->program), 'msg' => htmlentities($syslog->msg), 'priority' => htmlentities($syslog->priority), ]; } }