|
@ -0,0 +1,70 @@ |
|
|
|
|
|
<?php |
|
|
|
|
|
/** |
|
|
|
|
|
* @copyright NetMonsters <team@netmonsters.ru> |
|
|
|
|
|
* @link http://netmonsters.ru |
|
|
|
|
|
* @package Majestic |
|
|
|
|
|
* @subpackage Session |
|
|
|
|
|
* @since 2010-02-28 |
|
|
|
|
|
* @version SVN: $Id$ |
|
|
|
|
|
* @filesource $URL$ |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
class SessionModel extends Model |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
protected $life_time; |
|
|
|
|
|
|
|
|
|
|
|
public function __construct() |
|
|
|
|
|
{ |
|
|
|
|
|
parent::__construct(); |
|
|
|
|
|
$this->life_time = get_cfg_var('session.gc_maxlifetime'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Session handler methods */ |
|
|
|
|
|
|
|
|
|
|
|
public function open($save_path, $sess_name) |
|
|
|
|
|
{ |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function close() |
|
|
|
|
|
{ |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function read($id) |
|
|
|
|
|
{ |
|
|
|
|
|
$sql = 'SELECT `data` FROM ' . $this->table() . ' WHERE `id`=? AND `expires` > UNIX_TIMESTAMP()'; |
|
|
|
|
|
return (string) $this->fetchField($sql, $id, 'data'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function write($id, $data) |
|
|
|
|
|
{ |
|
|
|
|
|
preg_match('/user\|.+s:2:"id";s:(\d+):"(\d+)"/', $data, $match); |
|
|
|
|
|
$user_id = empty($match) ? 0 : (int) $match[2]; |
|
|
|
|
|
|
|
|
|
|
|
$sql = 'INSERT INTO ' . $this->table() . ' (`id`, `expires`, `user_id`, `data`)' |
|
|
|
|
|
. ' VALUES(' . $this->quote($id) . ', UNIX_TIMESTAMP() + ' . (int) $this->life_time . ', ' . $user_id . ', ' . $this->quote($data) . ')' |
|
|
|
|
|
. ' ON DUPLICATE KEY UPDATE `expires`=UNIX_TIMESTAMP() + ' . (int) $this->life_time . ', `user_id`=' . $user_id . ', `data`=' . $this->quote($data); |
|
|
|
|
|
$affected = $this->db->query($sql)->affectedRows(); |
|
|
|
|
|
return (bool) ($this->getInsertId()) ? $this->getInsertId() : $affected; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function destroy($id) |
|
|
|
|
|
{ |
|
|
|
|
|
return (bool) $this->db->delete($this->table(false), array('`id`=?' => (string) $id)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function gc($max_life_time) |
|
|
|
|
|
{ |
|
|
|
|
|
return (bool) $this->db->delete($this->table(false), '`expires` < UNIX_TIMESTAMP()'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* End of Session handler methods */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function destroyByUserId($user_id) |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->db->delete($this->table(false), array('`user_id`=?' => $user_id)); |
|
|
|
|
|
} |
|
|
|
|
|
} |