summaryrefslogtreecommitdiff
path: root/kohana/libraries/drivers/Session/Database.php
diff options
context:
space:
mode:
Diffstat (limited to 'kohana/libraries/drivers/Session/Database.php')
-rw-r--r--kohana/libraries/drivers/Session/Database.php163
1 files changed, 0 insertions, 163 deletions
diff --git a/kohana/libraries/drivers/Session/Database.php b/kohana/libraries/drivers/Session/Database.php
deleted file mode 100644
index 261541e7..00000000
--- a/kohana/libraries/drivers/Session/Database.php
+++ /dev/null
@@ -1,163 +0,0 @@
-<?php defined('SYSPATH') or die('No direct script access.');
-/**
- * Session database driver.
- *
- * $Id$
- *
- * @package Core
- * @author Kohana Team
- * @copyright (c) 2007-2008 Kohana Team
- * @license http://kohanaphp.com/license.html
- */
-class Session_Database_Driver implements Session_Driver {
-
- /*
- CREATE TABLE sessions
- (
- session_id VARCHAR(127) NOT NULL,
- last_activity INT(10) UNSIGNED NOT NULL,
- data TEXT NOT NULL,
- PRIMARY KEY (session_id)
- );
- */
-
- // Database settings
- protected $db = 'default';
- protected $table = 'sessions';
-
- // Encryption
- protected $encrypt;
-
- // Session settings
- protected $session_id;
- protected $written = FALSE;
-
- public function __construct()
- {
- // Load configuration
- $config = Kohana::config('session');
-
- if ( ! empty($config['encryption']))
- {
- // Load encryption
- $this->encrypt = Encrypt::instance();
- }
-
- if (is_array($config['storage']))
- {
- if ( ! empty($config['storage']['group']))
- {
- // Set the group name
- $this->db = $config['storage']['group'];
- }
-
- if ( ! empty($config['storage']['table']))
- {
- // Set the table name
- $this->table = $config['storage']['table'];
- }
- }
-
- // Load database
- $this->db = Database::instance($this->db);
-
- Kohana::log('debug', 'Session Database Driver Initialized');
- }
-
- public function open($path, $name)
- {
- return TRUE;
- }
-
- public function close()
- {
- return TRUE;
- }
-
- public function read($id)
- {
- // Load the session
- $query = $this->db->from($this->table)->where('session_id', $id)->limit(1)->get()->result(TRUE);
-
- if ($query->count() === 0)
- {
- // No current session
- $this->session_id = NULL;
-
- return '';
- }
-
- // Set the current session id
- $this->session_id = $id;
-
- // Load the data
- $data = $query->current()->data;
-
- return ($this->encrypt === NULL) ? base64_decode($data) : $this->encrypt->decode($data);
- }
-
- public function write($id, $data)
- {
- $data = array
- (
- 'session_id' => $id,
- 'last_activity' => time(),
- 'data' => ($this->encrypt === NULL) ? base64_encode($data) : $this->encrypt->encode($data)
- );
-
- if ($this->session_id === NULL)
- {
- // Insert a new session
- $query = $this->db->insert($this->table, $data);
- }
- elseif ($id === $this->session_id)
- {
- // Do not update the session_id
- unset($data['session_id']);
-
- // Update the existing session
- $query = $this->db->update($this->table, $data, array('session_id' => $id));
- }
- else
- {
- // Update the session and id
- $query = $this->db->update($this->table, $data, array('session_id' => $this->session_id));
-
- // Set the new session id
- $this->session_id = $id;
- }
-
- return (bool) $query->count();
- }
-
- public function destroy($id)
- {
- // Delete the requested session
- $this->db->delete($this->table, array('session_id' => $id));
-
- // Session id is no longer valid
- $this->session_id = NULL;
-
- return TRUE;
- }
-
- public function regenerate()
- {
- // Generate a new session id
- session_regenerate_id();
-
- // Return new session id
- return session_id();
- }
-
- public function gc($maxlifetime)
- {
- // Delete all expired sessions
- $query = $this->db->delete($this->table, array('last_activity <' => time() - $maxlifetime));
-
- Kohana::log('debug', 'Session garbage collected: '.$query->count().' row(s) deleted.');
-
- return TRUE;
- }
-
-} // End Session Database Driver