<?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); } }