blob: de1908ac6a25810d40b9ca91e6873c5360512071 [file] [log] [blame]
Andrey Andreev47a47fb2014-05-31 16:08:30 +03001<?php
2/**
3 * CodeIgniter
4 *
Andrey Andreevbf6b11d2015-01-12 17:27:12 +02005 * An open source application development framework for PHP 5.2.4
Andrey Andreev47a47fb2014-05-31 16:08:30 +03006 *
Andrey Andreev46f2f262014-11-11 14:37:51 +02007 * This content is released under the MIT License (MIT)
Andrey Andreev47a47fb2014-05-31 16:08:30 +03008 *
Andrey Andreevbf6b11d2015-01-12 17:27:12 +02009 * Copyright (c) 2014 - 2015, British Columbia Institute of Technology
Andrey Andreev47a47fb2014-05-31 16:08:30 +030010 *
Andrey Andreev46f2f262014-11-11 14:37:51 +020011 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
Andrey Andreev47a47fb2014-05-31 16:08:30 +030017 *
Andrey Andreev46f2f262014-11-11 14:37:51 +020018 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 * THE SOFTWARE.
28 *
29 * @package CodeIgniter
30 * @author EllisLab Dev Team
Andrey Andreev47a47fb2014-05-31 16:08:30 +030031 * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/)
Andrey Andreevbf6b11d2015-01-12 17:27:12 +020032 * @copyright Copyright (c) 2014 - 2015, British Columbia Institute of Technology (http://bcit.ca/)
Andrey Andreev46f2f262014-11-11 14:37:51 +020033 * @license http://opensource.org/licenses/MIT MIT License
34 * @link http://codeigniter.com
35 * @since Version 3.0.0
Andrey Andreev47a47fb2014-05-31 16:08:30 +030036 * @filesource
37 */
38defined('BASEPATH') OR exit('No direct script access allowed');
39
40/**
41 * CodeIgniter Session Driver Class
42 *
Andrey Andreev46f2f262014-11-11 14:37:51 +020043 * @package CodeIgniter
Andrey Andreev47a47fb2014-05-31 16:08:30 +030044 * @subpackage Libraries
45 * @category Sessions
Andrey Andreev46f2f262014-11-11 14:37:51 +020046 * @author Andrey Andreev
47 * @link http://codeigniter.com/user_guide/libraries/sessions.html
Andrey Andreev47a47fb2014-05-31 16:08:30 +030048 */
49abstract class CI_Session_driver implements SessionHandlerInterface {
50
Andrey Andreevdfb39be2014-10-06 01:50:14 +030051 protected $_config;
Andrey Andreev47a47fb2014-05-31 16:08:30 +030052
53 /**
Andrey Andreev93d9fa72014-08-27 22:14:36 +030054 * Data fingerprint
Andrey Andreev47a47fb2014-05-31 16:08:30 +030055 *
56 * @var bool
57 */
58 protected $_fingerprint;
59
Andrey Andreev93d9fa72014-08-27 22:14:36 +030060 /**
61 * Lock placeholder
62 *
63 * @var mixed
64 */
65 protected $_lock = FALSE;
66
Andrey Andreev7474a672014-10-31 23:35:32 +020067 /**
68 * Read session ID
69 *
70 * Used to detect session_regenerate_id() calls because PHP only calls
71 * write() after regenerating the ID.
72 *
73 * @var string
74 */
75 protected $_session_id;
76
Andrey Andreev47a47fb2014-05-31 16:08:30 +030077 // ------------------------------------------------------------------------
78
79 /**
80 * Class constructor
81 *
82 * @param array $params Configuration parameters
83 * @return void
84 */
Andrey Andreevdfb39be2014-10-06 01:50:14 +030085 public function __construct(&$params)
Andrey Andreev47a47fb2014-05-31 16:08:30 +030086 {
Andrey Andreevdfb39be2014-10-06 01:50:14 +030087 $this->_config =& $params;
Andrey Andreev47a47fb2014-05-31 16:08:30 +030088 }
89
90 // ------------------------------------------------------------------------
91
92 protected function _cookie_destroy()
93 {
94 return setcookie(
Andrey Andreevdfb39be2014-10-06 01:50:14 +030095 $this->_config['cookie_name'],
Andrey Andreev47a47fb2014-05-31 16:08:30 +030096 NULL,
97 1,
Andrey Andreevdfb39be2014-10-06 01:50:14 +030098 $this->_config['cookie_path'],
99 $this->_config['cookie_domain'],
100 $this->_config['cookie_secure'],
101 TRUE
Andrey Andreev47a47fb2014-05-31 16:08:30 +0300102 );
103 }
104
Andrey Andreev93d9fa72014-08-27 22:14:36 +0300105 // ------------------------------------------------------------------------
106
107 /**
108 * Get lock
109 *
Andrey Andreev19c25242015-01-14 22:13:36 +0200110 * A dummy method allowing drivers with no locking functionality
111 * (databases other than PostgreSQL and MySQL) to act as if they
112 * do acquire a lock.
Andrey Andreev93d9fa72014-08-27 22:14:36 +0300113 *
114 * @param string $session_id
115 * @return bool
116 */
117 protected function _get_lock($session_id)
118 {
Andrey Andreev19c25242015-01-14 22:13:36 +0200119 $this->_lock = TRUE;
Andrey Andreev93d9fa72014-08-27 22:14:36 +0300120 return TRUE;
121 }
122
123 // ------------------------------------------------------------------------
124
125 /**
126 * Release lock
127 *
128 * @return bool
129 */
130 protected function _release_lock()
131 {
Andrey Andreev19c25242015-01-14 22:13:36 +0200132 if ($this->_lock)
Andrey Andreev93d9fa72014-08-27 22:14:36 +0300133 {
Andrey Andreev93d9fa72014-08-27 22:14:36 +0300134 $this->_lock = FALSE;
135 }
136
137 return TRUE;
138 }
139
Andrey Andreev47a47fb2014-05-31 16:08:30 +0300140}
141
142/* End of file Session_driver.php */
143/* Location: ./system/libraries/Session/Session_driver.php */