Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Repository/AdminLog.php
<?php

namespace XF\Repository;

use
XF\Mvc\Entity\Finder;
use
XF\Mvc\Entity\Repository;

use function
intval;

class
AdminLog extends Repository
{
   
/**
     * @return Finder
     */
   
public function findLogsForList()
    {
        return
$this->finder('XF:AdminLog')
            ->
with('User')
            ->
setDefaultOrder('request_date', 'DESC');
    }

    public function
getUsersInLog()
    {
        return
$this->db()->fetchPairs("
            SELECT user.user_id, user.username
            FROM (
                SELECT DISTINCT user_id FROM xf_admin_log
            ) AS log
            INNER JOIN xf_user AS user ON (log.user_id = user.user_id)
            ORDER BY user.username
        "
);
    }

    public function
logAdminRequest($userId, $url, array $data, $ipAddress)
    {
       
$userId = intval($userId);
        if (!
$userId)
        {
            return
null;
        }

       
$ipAddress = \XF\Util\Ip::convertIpStringToBinary($ipAddress);

       
$this->db()->insert('xf_admin_log', [
           
'user_id' => $userId,
           
'ip_address' => $ipAddress,
           
'request_date' => \XF::$time,
           
'request_url' => $url,
           
'request_data' => json_encode($data)
        ]);

        return
$this->db()->lastInsertId();
    }

    public function
pruneAdminLogs($cutOff = null)
    {
        if (
$cutOff === null)
        {
           
$logLength = $this->app()->config()['adminLogLength'];
            if (!
$logLength)
            {
                return
0;
            }

           
$cutOff = \XF::$time - 86400 * $logLength;
        }

        return
$this->db()->delete('xf_admin_log', 'request_date < ?', $cutOff);
    }
}