00001 <?php
00002
00016
00017
00018
00019 import('session.Session');
00020
00021 class SessionDAO extends DAO {
00027 function &getSession($sessionId) {
00028 $result = &$this->retrieve(
00029 'SELECT * FROM sessions WHERE session_id = ?', $sessionId
00030 );
00031
00032 $session = null;
00033 if ($result->RecordCount() != 0) {
00034 $row = &$result->GetRowAssoc(false);
00035
00036 $session = &new Session();
00037 $session->setId($row['session_id']);
00038 $session->setUserId($row['user_id']);
00039 $session->setIpAddress($row['ip_address']);
00040 $session->setUserAgent($row['user_agent']);
00041 $session->setSecondsCreated($row['created']);
00042 $session->setSecondsLastUsed($row['last_used']);
00043 $session->setRemember($row['remember']);
00044 $session->setSessionData($row['data']);
00045
00046 }
00047
00048 $result->Close();
00049 unset($result);
00050
00051 return $session;
00052 }
00053
00058 function insertSession(&$session) {
00059 return $this->update(
00060 'INSERT INTO sessions
00061 (session_id, ip_address, user_agent, created, last_used, remember, data)
00062 VALUES
00063 (?, ?, ?, ?, ?, ?, ?)',
00064 array(
00065 $session->getId(),
00066 $session->getIpAddress(),
00067 $session->getUserAgent(),
00068 $session->getSecondsCreated(),
00069 $session->getSecondsLastUsed(),
00070 $session->getRemember() ? 1 : 0,
00071 $session->getSessionData()
00072 )
00073 );
00074 }
00075
00080 function updateSession(&$session) {
00081 return $this->update(
00082 'UPDATE sessions
00083 SET
00084 user_id = ?,
00085 ip_address = ?,
00086 user_agent = ?,
00087 created = ?,
00088 last_used = ?,
00089 remember = ?,
00090 data = ?
00091 WHERE session_id = ?',
00092 array(
00093 $session->getUserId(),
00094 $session->getIpAddress(),
00095 $session->getUserAgent(),
00096 $session->getSecondsCreated(),
00097 $session->getSecondsLastUsed(),
00098 $session->getRemember() ? 1 : 0,
00099 $session->getSessionData(),
00100 $session->getId()
00101 )
00102 );
00103 }
00104
00109 function deleteSession(&$session) {
00110 return $this->deleteSessionById($session->getId());
00111 }
00112
00117 function deleteSessionById($sessionId) {
00118 return $this->update(
00119 'DELETE FROM sessions WHERE session_id = ?', $sessionId
00120 );
00121 }
00122
00127 function deleteSessionsByUserId($userId) {
00128 return $this->update(
00129 'DELETE FROM sessions WHERE user_id = ?', $userId
00130 );
00131 }
00132
00138 function deleteSessionByLastUsed($lastUsed, $lastUsedRemember = 0) {
00139 if ($lastUsedRemember == 0) {
00140 return $this->update(
00141 'DELETE FROM sessions WHERE (last_used < ? AND remember = 0)', $lastUsed
00142 );
00143 } else {
00144 return $this->update(
00145 'DELETE FROM sessions WHERE (last_used < ? AND remember = 0) OR (last_used < ? AND remember = 1)',
00146 array($lastUsed, $lastUsedRemember)
00147 );
00148 }
00149 }
00150
00154 function deleteAllSessions() {
00155 return $this->update('DELETE FROM sessions');
00156 }
00157
00163 function sessionExistsById($sessionId) {
00164 $result = &$this->retrieve(
00165 'SELECT COUNT(*) FROM sessions WHERE session_id = ?',
00166 $sessionId
00167 );
00168 $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00169
00170 $result->Close();
00171 unset($result);
00172
00173 return $returner;
00174 }
00175 }
00176
00177 ?>