3 * Table Definition for session
5 * Laconica - a distributed open-source microblogging tool
6 * Copyright (C) 2009, Control Yourself, Inc.
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 if (!defined('LACONICA')) { exit(1); }
24 require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
26 class Session extends Memcached_DataObject
29 /* the code below is auto generated do not remove the above tag */
31 public $__table = 'session'; // table name
32 public $id; // varchar(32) primary_key not_null
33 public $session_data; // text()
34 public $created; // datetime() not_null
35 public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
38 function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Session',$k,$v); }
40 /* the code above is auto generated do not remove the tag below */
43 static function logdeb($msg)
45 common_debug("Session: " . $msg);
48 static function open($save_path, $session_name)
53 static function close()
58 static function read($id)
60 self::logdeb("Fetching session '$id'");
62 $session = Session::staticGet('id', $id);
64 if (empty($session)) {
67 return (string)$session->session_data;
71 static function write($id, $session_data)
73 self::logdeb("Writing session '$id'");
75 $session = Session::staticGet('id', $id);
77 if (empty($session)) {
78 $session = new Session();
81 $session->session_data = $session_data;
82 $session->created = common_sql_now();
84 return $session->insert();
86 $session->session_data = $session_data;
88 return $session->update();
92 static function destroy($id)
94 self::logdeb("Deleting session $id");
96 $session = Session::staticGet('id', $id);
98 if (!empty($session)) {
99 return $session->delete();
103 static function gc($maxlifetime)
105 self::logdeb("garbage collection (maxlifetime = $maxlifetime)");
107 $epoch = time() - $maxlifetime;
109 $qry = 'DELETE FROM session ' .
110 'WHERE modified < "'.$epoch.'"';
112 $session = new Session();
114 $result = $session->query($qry);
116 self::logdeb("garbage collection result = $result");
119 static function setSaveHandler()
121 self::logdeb("setting save handlers");
122 $result = session_set_save_handler('Session::open', 'Session::close', 'Session::read',
123 'Session::write', 'Session::destroy', 'Session::gc');
124 self::logdeb("save handlers result = $result");