X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_session.inc;h=9d298cd9eabdf7b9a2933f39fcafe2aec58a8418;hb=78a6813efd2f0b4eb471a688685a2abf1429ebf8;hp=2d14d1f5ec0aa01df08c9f76ead213f893fa91ab;hpb=5fd39b18eb03350376b82eac67e19eae0804f67d;p=gosa.git diff --git a/gosa-core/include/class_session.inc b/gosa-core/include/class_session.inc index 2d14d1f5e..9d298cd9e 100644 --- a/gosa-core/include/class_session.inc +++ b/gosa-core/include/class_session.inc @@ -32,17 +32,107 @@ class session { } + public static function add_channel($name) + { + /* If there's already such kind of channel, skip... */ + if (isset($_SESSION[$name])){ + return (FALSE); + } + + /* Allocate it... */ + $_SESSION[$name]= array(); + $_POST["_channel_"]= $name; + return (TRUE); + } + + public static function remove_channel($name) + { + /* If there's already such kind of channel, skip... */ + if (isset($_SESSION[$name])){ + unset($_SESSION[$name]); + if (isset($_POST["_channel_"])){ + unset($_POST["_channel_"]); + } + return (TRUE); + } + + return (FALSE); + } + public static function is_set($name) + { + $channel= ""; + if (isset($_POST['_channel_'])){ + $channel= $_POST['_channel_']; + } + + /* Global fallback if not set */ + if ($channel == ""){ + return(isset($_SESSION[$name])); + } + + /* Sanity check */ + if (!session::channel_exists($channel)){ + msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG); + } + + $channel= "gch_".$channel; + return(isset($_SESSION[$channel][$name])); + } + + public static function global_is_set($name) { return(isset($_SESSION[$name])); } public static function set($name,$value) + { + $channel= ""; + if (isset($_POST['_channel_'])){ + $channel= $_POST['_channel_']; + } + + /* Global fallback if not set */ + if ($channel == ""){ + $_SESSION[$name] = $value; + } else { + /* Sanity check */ + if (!session::channel_exists($channel)){ + msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG); + } + $_SESSION[$channel][$name] = $value; + } + } + + public static function global_set($name,$value) { $_SESSION[$name] = $value; } public static function &get($name) + { + $channel= ""; + if (isset($_POST['_channel_'])){ + $channel= $_POST['_channel_']; + } + + /* Global fallback if not set */ + if ($channel == ""){ + $ret = &$_SESSION[$name]; + return($ret); + } + + /* Sanity check */ + if (!session::channel_exists($channel)){ + msg_dialog::display(_("Internal error"), _("Requested channel does not exist! Please contact your Administrator."), FATAL_ERROR_DIALOG); + } + + $channel= "gch_".$channel; + $ret = &$_SESSION[$channel][$name]; + return($ret); + } + + public static function &global_get($name) { $ret = &$_SESSION[$name]; return($ret); @@ -50,7 +140,26 @@ class session { public static function delete($name) { - if(session::is_set($name)){ + $channel= ""; + if (isset($_POST['_channel_'])){ + $channel= $_POST['_channel_']; + } + + /* Global fallback if not set */ + if ($channel == ""){ + if(isset($_SESSION[$name])){ + unset($_SESSION[$name]); + } + } else { + if(isset($_SESSION[$channel][$name])){ + unset($_SESSION[$channel][$name]); + } + } + } + + public static function global_delete($name) + { + if($_SESSION[$name]){ unset($_SESSION[$name]); } } @@ -60,6 +169,11 @@ class session { return(session::delete($name)); } + public static function global_un_set($name) + { + return(session::global_delete($name)); + } + public static function start() { /* Set cookie lifetime to one day (The parameter is in seconds ) */ @@ -72,6 +186,7 @@ class session { !! The garbage collector is a cron job on debian systems, the cronjob will fetch the timeout from the php.ini, so if you use debian, you must hardcode session.gc_maxlifetime in your php.ini */ ini_set("session.gc_maxlifetime",24*60*60); + session_name("GOsa"); session_start(); /* Check for changed browsers and bail out */ @@ -79,6 +194,7 @@ class session { { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { session_destroy(); + session_name("GOsa"); session_start(); } } else {