File "LogService.php"

Full Path: /home/warrior1/public_html/languages/wp-content/plugins/file-manager/backend/app/Http/Services/LogService.php
File size: 1.56 KB
MIME-type: text/x-php
Charset: utf-8

<?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();
    }
}