1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/movim_ynh.git synced 2024-09-03 19:46:19 +02:00
movim_ynh/sources/system/Session.php
2015-08-19 11:28:28 +02:00

94 lines
1.9 KiB
PHP

<?php
/**
* @file Session.php
* This file is part of MOVIM.
*
* @brief Class that manages session variables with minimal lock time.
*
* @author Guillaume Pasquet <etenil@etenilsrealm.nl>
*
* Yes, this class is again a singleton. But this is justified by the fact that
* there can only be one active session that is locked down.
*
* @version 1.0
* @date 26 April 2011
*
* Copyright (C)2011 MOVIM
*
* See COPYING for licensing information.
*/
class Session
{
//protected $db;
protected static $instance;
protected static $sid = null;
protected $values = array();
/**
* Loads and immediately closes the session variables for the namespace
* $name.
*/
protected function __construct()
{
}
/**
* Gets a session handle.
*/
public static function start($name = false)
{
if(!isset(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Gets a session variable. Returns false if doesn't exist.
*/
public function get($varname)
{
if(array_key_exists($varname, $this->values)) {
return unserialize(base64_decode($this->values[$varname]));
} else {
return false;
}
}
/**
* Sets a session variable. Returns $value.
*/
public function set($varname, $value)
{
$value = base64_encode(serialize($value));
$this->values[$varname] = $value;
return $value;
}
/**
* Deletes a variable from the session.
*/
public function remove($varname)
{
unset($this->values[$varname]);
}
/**
* Deletes all this session container (not the session!)
*/
public static function dispose()
{
if(isset(self::$instance)) {
self::$instance = null;
return true;
} else {
return false;
}
}
}
?>