AutorÃa | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Mapper;
use LeadersLinked\Model\Session;
use LeadersLinked\Mapper\Common\MapperCommon;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Log\LoggerInterface;
class SessionMapper extends MapperCommon
{
const _TABLE = 'tbl_sessions';
/**
*
* @var SessionMapper
*/
private static $_instance;
/**
*
* @param AdapterInterface $adapter
*/
private function __construct($adapter)
{
parent::__construct($adapter);
}
/**
*
* @param AdapterInterface $adapter
* @return \LeadersLinked\Mapper\SessionMapper
*/
public static function getInstance($adapter)
{
if(self::$_instance == null) {
self::$_instance = new SessionMapper($adapter);
}
return self::$_instance;
}
/**
*
* @param string $id
* @return Session
*/
public function fetchOne($id)
{
$prototype = new Session();
$select = $this->sql->select(self::_TABLE);
$select->where->equalTo('id', $id);
return $this->executeFetchOneObject($select, $prototype);
}
/**
*
* @param string $id
* @param string $name
* @param string $data
* @param int $lifetime
* @return boolean
*/
public function insert($id, $name, $data, $lifetime)
{
$values = [
'id' => $id,
'name' => $name,
'data' => $data,
'modified' => time(),
'lifetime' => $lifetime,
];
$insert = $this->sql->insert(self::_TABLE);
$insert->values($values);
return $this->executeInsert($insert);
}
/**
*
* @param string $id
* @param string $data
* @return boolean
*/
public function update($id, $data)
{
$values = [
'data' => $data,
'modified' => time()
];
$update = $this->sql->update(self::_TABLE);
$update->set($values);
$update->where->equalTo('id', $id);
return $this->executeUpdate($update);
}
/**
*
* @param string $id
* @return boolean
*/
public function delete($id)
{
$delete = $this->sql->delete(self::_TABLE);
$delete->where->equalTo('id', $id);
return $this->executeDelete($delete);
}
/**
*
* @param int $maxlifetime
* @return boolean
*/
public function deleteAllExpired($maxlifetime)
{
$sql = ' DELETE FROM `' . self::_TABLE . '` WHERE (`modified` + `lifetime`) < ? ';
return $this->executeSentenceWithParameters($sql, [$maxlifetime]);
}
}