*/
namespace Friendica\Core;
+use Friendica\Core\Session\CacheSessionHandler;
use Friendica\Core\Session\DatabaseSessionHandler;
-use Friendica\Core\Session\MemcacheSessionHandler;
/**
* High-level Session service class
*
- * @author Hypolite Petovan <mrpetovan@gmail.com>
+ * @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class Session
{
ini_set('session.cookie_secure', 1);
}
- if (!Config::get('system', 'disable_database_session')) {
- $memcache = Cache::memcache();
- if (is_object($memcache)) {
- $SessionHandler = new MemcacheSessionHandler($memcache);
+ $session_handler = Config::get('system', 'session_handler', 'database');
+ if ($session_handler != 'native') {
+ if ($session_handler == 'cache' && Config::get('system', 'cache_driver', 'database') != 'database') {
+ $SessionHandler = new CacheSessionHandler();
} else {
$SessionHandler = new DatabaseSessionHandler();
}
return isset($_SESSION[$name]);
}
- public static function get($name)
+ /**
+ * Retrieves a key from the session super global or the defaults if the key is missing or the value is falsy.
+ *
+ * Handle the case where session_start() hasn't been called and the super global isn't available.
+ *
+ * @param string $name
+ * @param mixed $defaults
+ * @return mixed
+ */
+ public static function get($name, $defaults = null)
{
- return defaults($_SESSION, $name, null);
+ if (isset($_SESSION)) {
+ $return = defaults($_SESSION, $name, $defaults);
+ } else {
+ $return = $defaults;
+ }
+
+ return $return;
}
public static function set($name, $value)