Open Journal Systems  3.3.0
SessionDAO.inc.php
1 <?php
2 
18 import('lib.pkp.classes.session.Session');
19 
20 class SessionDAO extends DAO {
21 
25  function newDataObject() {
26  return new Session();
27  }
28 
34  function &getSession($sessionId) {
35  $result = $this->retrieve(
36  'SELECT * FROM sessions WHERE session_id = ?',
37  array($sessionId)
38  );
39 
40  $session = null;
41  if ($result->RecordCount() != 0) {
42  $row = $result->GetRowAssoc(false);
43 
44  $session = $this->newDataObject();
45  $session->setId($row['session_id']);
46  $session->setUserId($row['user_id']);
47  $session->setIpAddress($row['ip_address']);
48  $session->setUserAgent($row['user_agent']);
49  $session->setSecondsCreated($row['created']);
50  $session->setSecondsLastUsed($row['last_used']);
51  $session->setRemember($row['remember']);
52  $session->setSessionData($row['data']);
53  $session->setDomain($row['domain']);
54  }
55 
56  $result->Close();
57  return $session;
58  }
59 
64  function insertObject($session) {
65  $this->update(
66  'INSERT INTO sessions
67  (session_id, ip_address, user_agent, created, last_used, remember, data, domain)
68  VALUES
69  (?, ?, ?, ?, ?, ?, ?, ?)',
70  array(
71  $session->getId(),
72  $session->getIpAddress(),
73  substr($session->getUserAgent(), 0, 255),
74  (int) $session->getSecondsCreated(),
75  (int) $session->getSecondsLastUsed(),
76  $session->getRemember() ? 1 : 0,
77  $session->getSessionData(),
78  $session->getDomain()
79  )
80  );
81  }
82 
87  function updateObject(&$session) {
88  return $this->update(
89  'UPDATE sessions
90  SET
91  user_id = ?,
92  ip_address = ?,
93  user_agent = ?,
94  created = ?,
95  last_used = ?,
96  remember = ?,
97  data = ?,
98  domain = ?
99  WHERE session_id = ?',
100  array(
101  $session->getUserId()==''?null:(int) $session->getUserId(),
102  $session->getIpAddress(),
103  substr($session->getUserAgent(), 0, 255),
104  (int) $session->getSecondsCreated(),
105  (int) $session->getSecondsLastUsed(),
106  $session->getRemember() ? 1 : 0,
107  $session->getSessionData(),
108  $session->getDomain(),
109  $session->getId()
110  )
111  );
112  }
113 
118  function deleteObject(&$session) {
119  return $this->deleteById($session->getId());
120  }
121 
126  function deleteById($sessionId) {
127  return $this->update(
128  'DELETE FROM sessions WHERE session_id = ?',
129  array($sessionId)
130  );
131  }
132 
137  function deleteByUserId($userId) {
138  return $this->update(
139  'DELETE FROM sessions WHERE user_id = ?',
140  array((int) $userId)
141  );
142  }
143 
149  function deleteByLastUsed($lastUsed, $lastUsedRemember = 0) {
150  if ($lastUsedRemember == 0) {
151  return $this->update(
152  'DELETE FROM sessions WHERE (last_used < ? AND remember = 0)',
153  array((int) $lastUsed)
154  );
155  } else {
156  return $this->update(
157  'DELETE FROM sessions WHERE (last_used < ? AND remember = 0) OR (last_used < ? AND remember = 1)',
158  array((int) $lastUsed, (int) $lastUsedRemember)
159  );
160  }
161  }
162 
166  function deleteAllSessions() {
167  return $this->update('DELETE FROM sessions');
168  }
169 
175  function sessionExistsById($sessionId) {
176  $result = $this->retrieve(
177  'SELECT COUNT(*) FROM sessions WHERE session_id = ?',
178  array($sessionId)
179  );
180  $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
181 
182  $result->Close();
183  return $returner;
184  }
185 }
186 
187 
SessionDAO\deleteAllSessions
deleteAllSessions()
Definition: SessionDAO.inc.php:166
SessionDAO\deleteObject
deleteObject(&$session)
Definition: SessionDAO.inc.php:118
SessionDAO\newDataObject
newDataObject()
Definition: SessionDAO.inc.php:25
SessionDAO\deleteByUserId
deleteByUserId($userId)
Definition: SessionDAO.inc.php:137
SessionDAO\deleteByLastUsed
deleteByLastUsed($lastUsed, $lastUsedRemember=0)
Definition: SessionDAO.inc.php:149
DAO\retrieve
& retrieve($sql, $params=false, $callHooks=true)
Definition: DAO.inc.php:85
SessionDAO\deleteById
deleteById($sessionId)
Definition: SessionDAO.inc.php:126
Session
Maintains user state information from one request to the next.
Definition: Session.inc.php:22
SessionDAO\insertObject
insertObject($session)
Definition: SessionDAO.inc.php:64
SessionDAO
Operations for retrieving and modifying Session objects.
Definition: SessionDAO.inc.php:20
SessionDAO\getSession
& getSession($sessionId)
Definition: SessionDAO.inc.php:34
DAO\update
update($sql, $params=false, $callHooks=true, $dieOnError=true)
Definition: DAO.inc.php:214
SessionDAO\updateObject
updateObject(&$session)
Definition: SessionDAO.inc.php:87
SessionDAO\sessionExistsById
sessionExistsById($sessionId)
Definition: SessionDAO.inc.php:175
DAO
Operations for retrieving and modifying objects from a database.
Definition: DAO.inc.php:31