65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?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();
|
|
}
|
|
}
|