ILIAS  Release_4_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilSession.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
11 class ilSession
12 {
19  static function _getData($a_session_id)
20  {
21  global $ilDB;
22 
23  $q = "SELECT data FROM usr_session WHERE session_id = ".
24  $ilDB->quote($a_session_id, "text");
25  $set = $ilDB->query($q);
26  $rec = $ilDB->fetchAssoc($set);
27 
28  return $rec["data"];
29  }
30 
37  static function _writeData($a_session_id, $a_data)
38  {
39  global $ilDB;
40 
41  $expires = time() + ini_get("session.gc_maxlifetime");
42  if (ilSession::_exists($a_session_id))
43  {
44  /*$q = "UPDATE usr_session SET ".
45  "expires = ".$ilDB->quote($expires, "integer").", ".
46  "data = ".$ilDB->quote($a_data, "clob").
47  ", ctime = ".$ilDB->quote(time(), "integer").
48  ", user_id = ".$ilDB->quote((int) $_SESSION["AccountId"], "integer").
49  " WHERE session_id = ".$ilDB->quote($a_session_id, "text");
50  array("integer", "clob", "integer", "integer", "text");
51  $ilDB->manipulate($q);*/
52 
53  $ilDB->update("usr_session", array(
54  "user_id" => array("integer", (int) $_SESSION["AccountId"]),
55  "expires" => array("integer", $expires),
56  "data" => array("clob", $a_data),
57  "ctime" => array("integer", time())
58  ), array(
59  "session_id" => array("text", $a_session_id)
60  ));
61 
62  }
63  else
64  {
65  /*$q = "INSERT INTO usr_session (session_id, expires, data, ctime,user_id) ".
66  "VALUES(".$ilDB->quote($a_session_id, "text").",".
67  $ilDB->quote($expires, "integer").",".
68  $ilDB->quote($a_data, "clob").",".
69  $ilDB->quote(time(), "integer").",".
70  $ilDB->quote((int) $_SESSION["AccountId"], "integer").")";
71  $ilDB->manipulate($q);*/
72 
73  $ilDB->insert("usr_session", array(
74  "session_id" => array("text", $a_session_id),
75  "expires" => array("integer", $expires),
76  "data" => array("clob", $a_data),
77  "ctime" => array("integer", time()),
78  "user_id" => array("integer", (int) $_SESSION["AccountId"])
79  ));
80 
81  }
82 
83  return true;
84  }
85 
92  static function _exists($a_session_id)
93  {
94  global $ilDB;
95 
96  $q = "SELECT session_id FROM usr_session WHERE session_id = ".
97  $ilDB->quote($a_session_id, "text");
98  $set = $ilDB->query($q);
99  if ($ilDB->fetchAssoc($set))
100  {
101  return true;
102  }
103  return false;
104  }
105 
111  static function _destroy($a_session_id)
112  {
113  global $ilDB;
114 
115  $q = "DELETE FROM usr_session WHERE session_id = ".
116  $ilDB->quote($a_session_id, "text");
117  $ilDB->manipulate($q);
118 
119  return true;
120  }
121 
127  static function _destroyByUserId($a_user_id)
128  {
129  global $ilDB;
130 
131  $q = "DELETE FROM usr_session WHERE user_id = ".
132  $ilDB->quote($a_user_id, "integer");
133  $ilDB->manipulate($q);
134 
135  return true;
136  }
137 
141  static function _destroyExpiredSessions()
142  {
143  global $ilDB;
144 
145  $q = "DELETE FROM usr_session WHERE expires < ".
146  $ilDB->quote(time(), "integer");
147  $ilDB->manipulate($q);
148 
149  return true;
150  }
151 
158  static function _duplicate($a_session_id)
159  {
160  global $ilDB;
161 
162  // Create new session id
163  $new_session = $a_session_id;
164  do
165  {
166  $new_session = md5($new_session);
167  $q ="SELECT * FROM usr_session WHERE ".
168  "session_id = ".$ilDB->quote($new_session, "text");
169  $res = $ilDB->query($q);
170  } while($ilDB->fetchAssoc($res));
171 
172  $query = "SELECT * FROM usr_session ".
173  "WHERE session_id = ".$ilDB->quote($a_session_id, "text");
174  $res = $ilDB->query($query);
175 
176  while ($row = $ilDB->fetchObject($res))
177  {
178  ilSession::_writeData($new_session,$row->data);
179  return $new_session;
180  }
181  return false;
182  }
183 
184 }
185 ?>