<?php namespace BitApps\FM\Http\Services; use BitApps\FM\Config; use BitApps\WPDatabase\QueryBuilder; use BitApps\FM\Model\Log; use BitApps\FM\Plugin; use DateTime; use Throwable; \defined('ABSPATH') || exit(); class LogService { public function all($skip = 0, $take = 20) { $logs = []; $count = 0; try { $logs = Log::skip($skip)->take($take)->desc()->get(); $count = Log::count(); } catch (Throwable $th) { // throw $th; } return compact('count', 'logs'); } public function save($command, $details) { $log = new Log(); $log->created_at = gmdate(QueryBuilder::TIME_FORMAT); $log->user_id = Plugin::instance()->permissions()->currentUserID(); $log->command = $command; $log->details = $details; return $log->save(); } public function delete($id) { return Log::where('id', $id)->delete(); } public function deleteOlder() { $logRetention = (int) (\defined('BFM_LOG_RETENTION') && BFM_LOG_RETENTION ? BFM_LOG_RETENTION : 30); if ($logRetention > 200) { $logRetention = 200; } $currentDate = new DateTime(); $dateToDelete = date_sub($currentDate, date_interval_create_from_date_string($logRetention . ' days')); $dateToDelete = date_format($dateToDelete, QueryBuilder::TIME_FORMAT); Config::updateOption('log_deleted_at', time()); return Log::where('created_at', '<', $dateToDelete)->delete(); } }