142 lines
3.1 KiB
PHP
142 lines
3.1 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* HybridAuth
|
||
|
* http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
|
||
|
* (c) 2009-2015, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
|
||
|
*/
|
||
|
require_once realpath(dirname(__FILE__)) . "/StorageInterface.php";
|
||
|
|
||
|
/**
|
||
|
* HybridAuth storage manager
|
||
|
*/
|
||
|
class Hybrid_Storage implements Hybrid_Storage_Interface {
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*/
|
||
|
function __construct() {
|
||
|
if (!session_id()) {
|
||
|
if (!session_start()) {
|
||
|
throw new Exception("Hybridauth requires the use of 'session_start()' at the start of your script, which appears to be disabled.", 1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$this->config("php_session_id", session_id());
|
||
|
$this->config("version", Hybrid_Auth::$version);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Saves a value in the config storage, or returns config if value is null
|
||
|
*
|
||
|
* @param string $key Config name
|
||
|
* @param string $value Config value
|
||
|
* @return array|null
|
||
|
*/
|
||
|
public function config($key, $value = null) {
|
||
|
$key = strtolower($key);
|
||
|
|
||
|
if ($value) {
|
||
|
$_SESSION["HA::CONFIG"][$key] = serialize($value);
|
||
|
} elseif (isset($_SESSION["HA::CONFIG"][$key])) {
|
||
|
return unserialize($_SESSION["HA::CONFIG"][$key]);
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns value from session storage
|
||
|
*
|
||
|
* @param string $key Key
|
||
|
* @return string|null
|
||
|
*/
|
||
|
public function get($key) {
|
||
|
$key = strtolower($key);
|
||
|
|
||
|
if (isset($_SESSION["HA::STORE"], $_SESSION["HA::STORE"][$key])) {
|
||
|
return unserialize($_SESSION["HA::STORE"][$key]);
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Saves a key value pair to the session storage
|
||
|
*
|
||
|
* @param string $key Key
|
||
|
* @param string $value Value
|
||
|
* @return void
|
||
|
*/
|
||
|
public function set($key, $value) {
|
||
|
$key = strtolower($key);
|
||
|
$_SESSION["HA::STORE"][$key] = serialize($value);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Clear session storage
|
||
|
* @return void
|
||
|
*/
|
||
|
function clear() {
|
||
|
$_SESSION["HA::STORE"] = array();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete a specific key from session storage
|
||
|
*
|
||
|
* @param string $key Key
|
||
|
* @return void
|
||
|
*/
|
||
|
function delete($key) {
|
||
|
$key = strtolower($key);
|
||
|
|
||
|
if (isset($_SESSION["HA::STORE"], $_SESSION["HA::STORE"][$key])) {
|
||
|
$f = $_SESSION['HA::STORE'];
|
||
|
unset($f[$key]);
|
||
|
$_SESSION["HA::STORE"] = $f;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Delete all keys recursively from session storage
|
||
|
*
|
||
|
* @param string $key Key
|
||
|
* @retun void
|
||
|
*/
|
||
|
function deleteMatch($key) {
|
||
|
$key = strtolower($key);
|
||
|
|
||
|
if (isset($_SESSION["HA::STORE"]) && count($_SESSION["HA::STORE"])) {
|
||
|
$f = $_SESSION['HA::STORE'];
|
||
|
foreach ($f as $k => $v) {
|
||
|
if (strstr($k, $key)) {
|
||
|
unset($f[$k]);
|
||
|
}
|
||
|
}
|
||
|
$_SESSION["HA::STORE"] = $f;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns session storage as a serialized string
|
||
|
* @return string|null
|
||
|
*/
|
||
|
function getSessionData() {
|
||
|
if (isset($_SESSION["HA::STORE"])) {
|
||
|
return serialize($_SESSION["HA::STORE"]);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Restores the session from serialized session data
|
||
|
*
|
||
|
* @param string $sessiondata Serialized session data
|
||
|
* @return void
|
||
|
*/
|
||
|
function restoreSessionData($sessiondata = null) {
|
||
|
$_SESSION["HA::STORE"] = unserialize($sessiondata);
|
||
|
}
|
||
|
|
||
|
}
|