1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/webtrees_ynh.git synced 2024-09-03 18:26:37 +02:00
webtrees_ynh/sources/app/Session.php

118 lines
2.6 KiB
PHP

<?php
/**
* webtrees: online genealogy
* Copyright (C) 2016 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/>.
*/
namespace Fisharebest\Webtrees;
/**
* Temporary class to migrate 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 isset($_SESSION[$name]);
}
/**
* 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);
}
}