Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16954 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php

declare(strict_types=1);

namespace LeadersLinked\Handler;

use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Log\LoggerInterface;
use LeadersLinked\Mapper\SessionMapper;
use Laminas\Session\SaveHandler\SaveHandlerInterface;


class SessionHandler implements SaveHandlerInterface
{

    /**
     * 
     * @var SessionMapper
     */
    private $sessionMapper;
    
    /**
     * 
     * @var string
     */
    private $session_name;
    
    /**
     * 
     * @var int
     */
    private $session_lifetime;
    
    /**
     * 
     * @param AdapterInterface $adapter
     * @param LoggerInterface $logger
     * @param int $session_lifetime
     */
    public function __construct(AdapterInterface $adapter, LoggerInterface $logger, int $session_lifetime)
    {
        $this->sessionMapper = SessionMapper::getInstance($adapter, $logger);
        $this->session_lifetime = $session_lifetime;
    }

    public function open ($save_path, $session_name)
    {
        $this->session_name = $session_name;
        return true;
    }


    public function close()
    {
        return true;
    }
    

    public function read($session_id)
    {
        $session = $this->sessionMapper->fetchOne($session_id);
        if($session){
            return $session->data;
        }else{
            return '';
        }
    }

    public function write($session_id, $session_data)
    {
        $session = $this->read($session_id);
        if($session) {
            return $this->sessionMapper->update($session_id, $session_data);
        } else {
            return $this->sessionMapper->insert($session_id, $this->session_name, $session_data, $this->session_lifetime);
        }
    }
    

    public function destroy($session_id)
    {
        return $this->sessionMapper->delete($session_id);
    }
    

    public function gc($maxlifetime)
    {
        return $this->sessionMapper->deleteAllExpired($maxlifetime);
    }
}