. * * @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', '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 */ $query = Syslog::hasAccess($request->user())->with('device'); if ($from = $request->get('from')) { $query->where('timestamp', '>=', $from); } if ($to = $request->get('to')) { $query->where('timestamp', '<=', $to); } return $query; } 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), ]; } }