From a2dd8c47fddc35881442e8b411321a987cda4080 Mon Sep 17 00:00:00 2001 From: secretr Date: Mon, 20 Feb 2012 14:55:16 +0000 Subject: [PATCH] more session options from site preferences (not added to the preference UI yet) --- e107_handlers/session_handler.php | 40 ++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/e107_handlers/session_handler.php b/e107_handlers/session_handler.php index eb309d39c..8fe0c8c0c 100644 --- a/e107_handlers/session_handler.php +++ b/e107_handlers/session_handler.php @@ -2,7 +2,7 @@ /* * e107 website system * - * Copyright (C) 2008-2010 e107 Inc (e107.org) + * Copyright (C) 2008-2012 e107 Inc (e107.org) * Released under the terms and conditions of the * GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * @@ -155,6 +155,29 @@ class e_session */ protected $_data = array(); + /** + * Set session options + * @param string $key + * @param mixed $value + * @return e_session + */ + public function setOption($key, $value) + { + $this->setOptions(array($key => $value)); + return $this; + } + + /** + * Get session option + * @param string $key + * @param mixed $default + * @return mixed value + */ + public function getOption($key, $default = null) + { + return (isset($this->_options[$key]) ? $this->_options[$key] : $default); + } + /** * Set default settings/options based on the current security level * NOTE: new prefs 'session_save_path', 'session_save_method', 'session_lifetime' introduced, @@ -178,9 +201,11 @@ class e_session if(!defined('E107_INSTALL')) { - $config['SavePath'] = e107::getPref('session_save_path', false); - $config['SaveMethod'] = e107::getPref('session_save_method', 'files'); - $options['lifetime'] = (integer) e107::getPref('session_lifetime', 3600); + $config['SavePath'] = e107::getPref('session_save_path', false); // FIXME - new pref + $config['SaveMethod'] = e107::getPref('session_save_method', 'files'); // FIXME - new pref + $options['lifetime'] = (integer) e107::getPref('session_lifetime', 3600); // FIXME - new pref + $options['path'] = e107::getPref('session_cookie_path', ''); // FIXME - new pref + $options['secure'] = e107::getPref('ssl_enabled', false); // FIXME - new pref } $this->setConfig($config) @@ -429,7 +454,7 @@ class e_session { $this->setSessionName($sessionName); } - + // set session cookie params session_set_cookie_params($this->_options['lifetime'], $this->_options['path'], @@ -748,12 +773,11 @@ class e_core_session extends e_session { // default system configuration $this->setDefaultSystemConfig(); - - // TODO $data[config] and $data[options] to override default settings - + $namespace = 'e107sess'; // Quick Fix for Fatal Error "Cannot use object of type e107 as array" on line 550 $name = (isset($data['name']) && !empty($data['name']) ? $data['name'] : deftrue('e_COOKIE', 'e107')).'SID'; if(isset($data['namespace']) && !empty($data['namespace'])) $namespace = $data['namespace']; + // create $_SESSION['e107'] namespace by default $this->init($namespace, $name); }