1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
<?php
namespace Fisharebest\Webtrees;
/**
* webtrees: online genealogy
* Copyright (C) 2015 webtrees development team
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Class Session - temporary class to migrate away from Zend_Session
* to Symfony-based sessions, which need PHP 5.4
*/
class Session {
/**
* Start a session
*
* @param array $config
*/
public static function start(array $config = array()) {
$default_config = array(
'use_cookies' => 1,
'name' => 'WT_SESSION',
'cookie_lifetime' => 0,
'gc_maxlifetime' => 7200,
'gc_probability' => 1,
'gc_divisor' => 100,
'cookie_path' => '',
'cookie_httponly' => true,
);
session_register_shutdown();
foreach ($config + $default_config as $key => $value) {
ini_set('session.' . $key, $value);
}
session_start();
}
/**
* Read a value from the session
*
* @param string $name
* @param mixed $default
*
* @return mixed
*/
public static function get($name, $default = null) {
if (isset($_SESSION[$name])) {
return $_SESSION[$name];
} else {
return $default;
}
}
/**
* Write a value to the session
*
* @param string $name
* @param mixed $value
*/
public static function put($name, $value) {
$_SESSION[$name] = $value;
}
/**
* Remove a value from the session
*
* @param string $name
*/
public static function forget($name) {
unset($_SESSION[$name]);
}
/**
* Does a session variable exist?
*
* @param string $name
*
* @return bool
*/
public static function has($name) {
return array_key_exists($name, $_SESSION);
}
/**
* Remove all stored data from the session.
*/
public static function clear() {
$_SESSION = array();
}
/**
* After any change in authentication level, we should use a new session ID.
*
* @param bool $destroy
*/
public static function regenerate($destroy = false) {
if ($destroy) {
self::clear();
}
session_regenerate_id($destroy);
}
/**
* Set an explicit session ID. Typically used for search robots.
*
* @param string $id
*/
public static function setId($id) {
session_id($id);
}
}
|