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 open($save_path, $session_name)
48 static function close()
53 static function read($id)
55 $session = Session::staticGet('id', $id);
57 if (empty($session)) {
60 return (string)$session->session_data;
64 static function write($id, $session_data)
66 $session = Session::staticGet('id', $id);
68 if (empty($session)) {
69 $session = new Session();
72 $session->session_data = $session_data;
73 $session->created = common_sql_now();
75 return $session->insert();
77 $session->session_data = $session_data;
79 return $session->update();
83 static function destroy($id)
85 $session = Session::staticGet('id', $id);
87 if (!empty($session)) {
88 return $session->delete();
92 static function gc($maxlifetime)
94 $epoch = time() - $maxlifetime;
96 $qry = 'DELETE FROM session ' .
97 'WHERE modified < "'.$epoch.'"';
99 $session = new Session();
101 $session->query($qry);
104 static function setSaveHandler()
106 session_set_save_handler('Session::open', 'Session::close', 'Session::read',
107 'Session::write', 'Session::destroy', 'Session::gc');