89 lines
No EOL
2 KiB
PHP
89 lines
No EOL
2 KiB
PHP
<?php
|
|
|
|
/**
|
|
*
|
|
* CREATE
|
|
*
|
|
* TODO:
|
|
* - add support for named sessions
|
|
* - add support for dynamic table
|
|
*/
|
|
class Fiktiv_Session extends Fiktiv_Session_Abstract
|
|
{
|
|
|
|
/**
|
|
* Database link
|
|
* @var mysql resource
|
|
*/
|
|
private $_database = null;
|
|
|
|
private $_sessionTable = 'Sessions';
|
|
private $_sessionData = 'Data';
|
|
private $_sessionId = 'SessionId';
|
|
private $_sessionLife = 'Lifetime';
|
|
|
|
/**
|
|
* Setup the session handler with a database
|
|
* @param Zend_Db_Adapter_Abstract $database
|
|
*/
|
|
public function __construct(Zend_Db_Adapter_Abstract $database)
|
|
{
|
|
$this->_database = $database;
|
|
}
|
|
|
|
/**
|
|
* Open the database connection
|
|
*/
|
|
public function open()
|
|
{
|
|
if (!$this->_database->isConnected()) {
|
|
$this->_database->getConnection();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Close the database connection
|
|
*/
|
|
public function close()
|
|
{
|
|
if ($this->_database->isConnected()) {
|
|
$this->_database->closeConnection();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Read data from session database
|
|
*/
|
|
public function read($session)
|
|
{
|
|
$data = $this->_database->select()->from($this->_sessionTable, $this->_sessionData)->where($this->_sessionId . ' = ?', $session)->query()->fetchObject();
|
|
return ($data) ? $data->$this->_sessionData : null;
|
|
}
|
|
|
|
/**
|
|
* Write data to session database
|
|
*/
|
|
public function write($session, $data)
|
|
{
|
|
try{
|
|
return ($this->_database->insert($this->_sessionTable, array($this->_sessionId => $session, $this->_sessionData => $data))) ? true : false;
|
|
} catch (Zend_Db_Exception $ex) {
|
|
return ($this->_database->update($this->_sessionTable, array($this->_sessionId => $session, $this->_sessionData => $data))) ? true : false;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public function gc($life)
|
|
{}
|
|
|
|
} |