diff options
author | Andrew Dolgov <[email protected]> | 2013-04-17 15:36:34 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-04-17 15:36:48 +0400 |
commit | 404e2e3603c852a3f82a21c14b8888005e2b3f99 (patch) | |
tree | 8814cfecfe167fc32d474d670bc47be32a9a5e25 /classes/sessionhandler.php | |
parent | ba68b6815ab31d17cda113e7990eeb07558b02a9 (diff) |
more work on singleton-based DB
Diffstat (limited to 'classes/sessionhandler.php')
-rw-r--r-- | classes/sessionhandler.php | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/classes/sessionhandler.php b/classes/sessionhandler.php new file mode 100644 index 000000000..66d8dd86c --- /dev/null +++ b/classes/sessionhandler.php @@ -0,0 +1,73 @@ +<?php +class SessionHandler implements SessionHandlerInterface { + private static $instance; + private $db; + + public static function get() { + if (self::$instance == null) + self::$instance = new self(); + + return self::$instance; + } + + private function __construct() { + $this->db = Db::get(); + + session_set_save_handler("SessionHandler::open", "SessionHandler::close", + "SessionHandler::read", "SessionHandler::write", "SessionHandler::destroy", + "SessionHandler::gc"); + } + + public static function open($save_path, $name) { } + + + public static function read ($id){ + + $query = "SELECT data FROM ttrss_sessions WHERE id='$id'"; + + $res = $this->db->query("SELECT data FROM ttrss_sessions WHERE id='$id'"); + + if ($this->db->num_rows($res) != 1) { + + "INSERT INTO ttrss_sessions (id, data, expire) + VALUES ('$id', '$data', '$expire')"; + + + + } else { + $data = $this->db->fetch_result($res, 0, "data"); + return base64_decode($data); + } + + } + + public static function write($id, $data) { + if (! $data) { + return false; + } + + $data = $this->db->escape_string( base64_encode($data), false); + + $expire = time() + max(SESSION_COOKIE_LIFETIME, 86400); + + $query = "UPDATE ttrss_sessions SET data='$data', + expire = '$expire' WHERE id='$id'"; + + $this->db->query( $query); + return true; + } + + public static function close () { } + + public static function destroy($session_id) { + $this->db->query("DELETE FROM ttrss_sessions WHERE id = '$session_id'"); + return true; + } + + public static function gc($maxLifeTime) { + $this->db->query("DELETE FROM ttrss_sessions WHERE expire < " time() - $maxLifeTime); + return true; + } + +} +?> |