mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-16 22:43:19 +00:00
initial import
This commit is contained in:
134
lib/classes/session.class.php
Normal file
134
lib/classes/session.class.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
class session
|
||||
{
|
||||
private static $_instance;
|
||||
private static $_cli_storage = array();
|
||||
|
||||
private static $_cli_usage = false;
|
||||
|
||||
private static $_name = '';
|
||||
|
||||
/**
|
||||
* @return session
|
||||
*/
|
||||
public static function getInstance()
|
||||
{
|
||||
if(!self::$_instance)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
return session_name();
|
||||
}
|
||||
|
||||
function getId()
|
||||
{
|
||||
return session_id();
|
||||
}
|
||||
|
||||
function __construct($cookie = 'system')
|
||||
{
|
||||
$sapi_name = strtolower(substr(php_sapi_name(), 0, 3));
|
||||
|
||||
self::$_name = $cookie;
|
||||
|
||||
if($sapi_name == 'cli')
|
||||
{
|
||||
self::$_cli_usage = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$_cli_usage = false;
|
||||
session_name($cookie);
|
||||
session_start();
|
||||
}
|
||||
|
||||
$this->version = GV_version;
|
||||
|
||||
$this->gfc_box = ($this->isset_cookie('gfc_box') && $this->get_cookie('gfc_box') == true) ? true : false;
|
||||
$this->analytics = GV_googleAnalytics;
|
||||
}
|
||||
|
||||
function __set($key, $value)
|
||||
{
|
||||
if(self::$_cli_usage)
|
||||
{
|
||||
self::$_cli_storage[self::$_name][$key] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$_SESSION[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
function __get($key)
|
||||
{
|
||||
if(self::$_cli_usage)
|
||||
{
|
||||
return self::$_cli_storage[self::$_name][$key];
|
||||
}
|
||||
else
|
||||
{
|
||||
return $_SESSION[$key];
|
||||
}
|
||||
}
|
||||
|
||||
function __isset($key)
|
||||
{
|
||||
if(self::$_cli_usage)
|
||||
{
|
||||
return isset(self::$_cli_storage[self::$_name][$key]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return isset($_SESSION[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
public function is_authenticated()
|
||||
{
|
||||
return (isset($this->ses_id) && isset($this->usr_id));
|
||||
}
|
||||
|
||||
public function isset_cookie($name)
|
||||
{
|
||||
return isset($_COOKIE[$name]);
|
||||
}
|
||||
|
||||
public function get_cookie($name)
|
||||
{
|
||||
return $_COOKIE[$name];
|
||||
}
|
||||
|
||||
public function set_cookie($name, $value, $avalaibility, $http_only)
|
||||
{
|
||||
$https = false;
|
||||
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'])
|
||||
$https = true;
|
||||
|
||||
$expire = $avalaibility === 0 ? 0 : time() + (int)$avalaibility;
|
||||
|
||||
$http_only = !!$http_only;
|
||||
|
||||
if($avalaibility >= 0)
|
||||
$_COOKIE[$name] = $value;
|
||||
else
|
||||
unset($_COOKIE[$name]);
|
||||
|
||||
return setcookie($name, $value, $expire, '/', '', $https, $http_only);
|
||||
}
|
||||
|
||||
public function destroy()
|
||||
{
|
||||
$this->set_cookie($this->getName(), '', 420000, false);
|
||||
session_destroy();
|
||||
$this->set_cookie('last_act', '{}', 420000, true);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user