Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Session/DbStorage.php
<?php

namespace XF\Session;

use
XF\Db\AbstractAdapter;

class
DbStorage implements StorageInterface
{
   
/**
     * @var \XF\Db\AbstractAdapter
     */
   
protected $db;

    protected
$table;

    public function
__construct(AbstractAdapter $db, $table)
    {
       
$this->db = $db;
       
$this->table = $table;
    }

    public function
getSession($sessionId)
    {
       
$result = $this->db->fetchOne('
            -- XFDB=fromWrite
            SELECT session_data
            FROM '
. $this->table . '
            WHERE session_id = ?
                AND expiry_date >= ?
        '
, [$sessionId, \XF::$time]);
        if (
$result)
        {
            return @
unserialize($result);
        }
        else
        {
            return
false;
        }
    }

    public function
deleteSession($sessionId)
    {
       
$this->db->delete($this->table, 'session_id = ?', $sessionId);
    }

    public function
writeSession($sessionId, array $data, $lifetime, $existing)
    {
       
$this->db->query('
            -- XFDB=noForceAllWrite
            INSERT INTO '
. $this->table . '
                (session_id, session_data, expiry_date)
            VALUES
                (?, ?, ?)
            ON DUPLICATE KEY UPDATE
                session_data = VALUES(session_data),
                expiry_date = VALUES(expiry_date)
        '
, [$sessionId, serialize($data), \XF::$time + $lifetime]);
    }

    public function
deleteExpiredSessions()
    {
       
$this->db->delete($this->table, 'expiry_date < ?', \XF::$time);
    }
}