class_session.inc 6.21 KiB
<?php
/*
  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
  Copyright (C) 2003-2010  Cajus Pollmeier
  Copyright (C) 2011-2014  FusionDirectory
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
/*!
 * \file class_session.inc
 * Source code for class session
/*!
 * \brief This class contains all the function needed to manage sessions
class session {
  /*!
   * \brief Check if the name of the session is set
   * \param string $name The name of the session
  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]);
  /*!
   * \brief Check if a session is defined
   * \param string $name Name of the session
  public static function global_is_set($name)
    return isset($_SESSION[$name]);
  /*!
   * \brief Set a value in a session
   * \param string $name Name of the session
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
* * \param $value The new value */ 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; } } /*! * \brief Set a value in a session * * \param string $name Name of the session * * \param $value The new value */ public static function global_set($name, $value) { $_SESSION[$name] = $value; } /*! * \brief Accessor of a session * * \param string $name Name of the session */ 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; } /*! * \brief Accessor of a session * * \param string $name Name of the session */ public static function &global_get($name) { $ret = &$_SESSION[$name];
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
return $ret; } /*! * \brief Delete a session * * \param string $name Name of the session to delete */ public static function delete($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]); } } } /*! * \brief Delete a session * * \param string $name Name of the session to delete */ public static function global_delete($name) { if ($_SESSION[$name]) { unset($_SESSION[$name]); } } /*! * \brief Unset a session * * \param string $name Name of the session to delete */ public static function un_set($name) { return session::delete($name); } /*! * \brief Unset a session * * \param string $name Name of the session to delete */ public static function global_un_set($name) { return session::global_delete($name); } /*! * \brief Start a session */ public static function start($id = NULL) { session_name("FusionDirectory"); /* Set cookie lifetime to one day (The parameter is in seconds ) */ session_set_cookie_params(24 * 60 * 60); /* Set cache limter to one day (parameter is minute !!)*/ session_cache_expire(60 * 24); // default is 180