%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/utils/ |
Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/utils/session.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ /** * @package Api */ class CSession { /** * @var string */ static $sSessionName = ''; /** * @var bool */ static $bIsMagicQuotesOn = false; /** * @var bool */ static $bFirstStarted = false; /** * @var bool */ static $bStarted = false; private function __construct() {} /** * @param string $sKey * @return bool */ public static function Has($sKey) { if (!CSession::$bFirstStarted) { CSession::Start(); } return (isset($_SESSION[$sKey])); } /** * @param string $sKey * @return void */ public static function Clear($sKey) { CSession::Start(); unset($_SESSION[$sKey]); } /** * @return void */ public static function ClearAll() { CSession::Start(); $_SESSION = array(); } /** * @return void */ public static function Destroy() { CSession::Start(); CSession::$bStarted = false; @session_destroy(); } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public static function Get($sKey, $nmDefault = null) { if (!CSession::$bFirstStarted) { CSession::Start(); } return (isset($_SESSION[$sKey])) ? CSession::stripSlashesValue($_SESSION[$sKey]) : $nmDefault; } /** * @param string $sKey * @param mixed $mValue */ public static function Set($sKey, $mValue) { CSession::Start(); $_SESSION[$sKey] = $mValue; } /** * @return string */ public static function Id() { CSession::Start(); return @session_id(); } /** * @param string $sId * * @return string */ public static function SetId($sId) { CSession::Stop(); @session_id($sId); CSession::Start(); return @session_id(); } /** * @return string */ public static function DestroySessionById($sId) { CSession::Stop(); @session_id($sId); CSession::Start(); CSession::Destroy(); } /** * @return bool */ public static function Start() { if (@session_name() !== CSession::$sSessionName || !CSession::$bStarted || !CSession::$bFirstStarted) { if (@session_name()) { @session_write_close(); if (isset($GLOBALS['PROD_NAME']) && false !== strpos($GLOBALS['PROD_NAME'], 'Plesk')) // Plesk { @session_module_name('files'); } } @session_set_cookie_params(0); if (!empty(CSession::$sSessionName)) { @session_name(CSession::$sSessionName); } CSession::$bFirstStarted = true; CSession::$bStarted = true; return @session_start(); } return true; } /** * @return void */ public static function Stop() { if (CSession::$bStarted) { CSession::$bStarted = false; @session_write_close(); } } /** * @param mixed $mValue * @return mixed */ private static function stripSlashesValue($mValue) { if (!CSession::$bIsMagicQuotesOn) { return $mValue; } $sType = gettype($mValue); if ($sType === 'string') { return stripslashes($mValue); } else if ($sType === 'array') { $aReturnValue = array(); $mValueKeys = array_keys($mValue); foreach($mValueKeys as $sKey) { $aReturnValue[$sKey] = CSession::stripSlashesValue($mValue[$sKey]); } return $aReturnValue; } else { return $mValue; } } } CSession::$bIsMagicQuotesOn = (bool) ini_get('magic_quotes_gpc'); CSession::$sSessionName = API_SESSION_WEBMAIL_NAME;