1) fixed lost egw object if register_globals=On: was caused by the identicaly named session-variable used for php4-sessions (now renamed to egw_session)

2) $GLOBALS['phpgw{_info}'] ==> $GLOB ALS['egw{_info}']
This commit is contained in:
Ralf Becker 2005-03-04 11:33:44 +00:00
parent 6b2eb04274
commit 887e71e57e
2 changed files with 64 additions and 55 deletions

View File

@ -12,7 +12,7 @@
/* $Id$ */ /* $Id$ */
include_once(PHPGW_INCLUDE_ROOT . '/etemplate/inc/class.soetemplate.inc.php'); include_once(EGW_INCLUDE_ROOT . '/etemplate/inc/class.soetemplate.inc.php');
/** /**
* Business Object for eTemplates, extending the Storage Object * Business Object for eTemplates, extending the Storage Object
@ -79,7 +79,7 @@
{ {
$this->init($name); $this->init($name);
} }
$this->garbage_collection_done =& $GLOBALS['phpgw_info']['etemplate']['garbage_collection_done']; $this->garbage_collection_done =& $GLOBALS['egw_info']['etemplate']['garbage_collection_done'];
} }
/** /**
@ -238,7 +238,7 @@
{ {
list($msec,$sec) = explode(' ',microtime()); list($msec,$sec) = explode(' ',microtime());
$time = 100 * $sec + (int)(100 * $msec); // gives precision of 1/100 sec $time = 100 * $sec + (int)(100 * $msec); // gives precision of 1/100 sec
$id = $GLOBALS['phpgw_info']['flags']['currentapp'] .':'. $time; $id = $GLOBALS['egw_info']['flags']['currentapp'] .':'. $time;
//echo "<p>microtime()=".microtime().", sec=$sec, msec=$msec, id=$id</p>\n"; //echo "<p>microtime()=".microtime().", sec=$sec, msec=$msec, id=$id</p>\n";
return $id; return $id;
} }
@ -261,9 +261,9 @@
{ {
$id = $this->appsession_id; $id = $this->appsession_id;
} }
$GLOBALS['phpgw']->session->appsession($id,'etemplate',$data); $GLOBALS['egw']->session->appsession($id,'etemplate',$data);
if ($GLOBALS['phpgw_info']['server']['sessions_type'] == 'php4' && !$this->garbage_collection_done) if ($GLOBALS['egw_info']['server']['sessions_type'] == 'php4' && !$this->garbage_collection_done)
{ {
return $this->php4_session_garbage_collection(); return $this->php4_session_garbage_collection();
} }
@ -278,10 +278,10 @@
*/ */
function get_appsession($id) function get_appsession($id)
{ {
$data = $GLOBALS['phpgw']->session->appsession($id,'etemplate'); $data = $GLOBALS['egw']->session->appsession($id,'etemplate');
//echo "boetemplate::get_appsession('$id')"; _debug_array($data); //echo "boetemplate::get_appsession('$id')"; _debug_array($data);
if ($GLOBALS['phpgw_info']['server']['sessions_type'] == 'php4') if ($GLOBALS['egw_info']['server']['sessions_type'] == 'php4')
{ {
$this->php4_session_garbage_collection($id); $this->php4_session_garbage_collection($id);
} }
@ -300,7 +300,7 @@
function php4_session_garbage_collection($id_used='') function php4_session_garbage_collection($id_used='')
{ {
// now we are on php4 sessions and do a bit of garbage collection // now we are on php4 sessions and do a bit of garbage collection
$app_sessions =& $_SESSION['egw']['app_sessions']['etemplate']; $app_sessions =& $_SESSION[EGW_SESSION_VAR]['app_sessions']['etemplate'];
$session_used =& $app_sessions['session_used']; $session_used =& $app_sessions['session_used'];
if ($id_used) if ($id_used)
@ -460,7 +460,7 @@
if ($app == '') if ($app == '')
{ {
$app = $GLOBALS['phpgw_info']['flags']['current_app']; $app = $GLOBALS['egw_info']['flags']['current_app'];
} }
if (!file_exists(PHPGW_SERVER_ROOT."/$app/inc/class.$class.inc.php")) if (!file_exists(PHPGW_SERVER_ROOT."/$app/inc/class.$class.inc.php"))
{ {
@ -472,11 +472,11 @@
} }
if (!file_exists(PHPGW_SERVER_ROOT."/$app/inc/class.$class.inc.php")) if (!file_exists(PHPGW_SERVER_ROOT."/$app/inc/class.$class.inc.php"))
{ {
return $GLOBALS['phpgw_info']['etemplate']['extension'][$type] = False; return $GLOBALS['egw_info']['etemplate']['extension'][$type] = False;
} }
$GLOBALS['phpgw_info']['etemplate']['extension'][$type] = CreateObject($app.'.'.$class,$ui='html'); $GLOBALS['egw_info']['etemplate']['extension'][$type] = CreateObject($app.'.'.$class,$ui='html');
return $GLOBALS['phpgw_info']['etemplate']['extension'][$type]->human_name; return $GLOBALS['egw_info']['etemplate']['extension'][$type]->human_name;
} }
/** /**
@ -489,8 +489,8 @@
*/ */
function haveExtension($type,$function='') function haveExtension($type,$function='')
{ {
return ($GLOBALS['phpgw_info']['etemplate']['extension'][$type] || $this->loadExtension($type,$ui)) && return ($GLOBALS['egw_info']['etemplate']['extension'][$type] || $this->loadExtension($type,$ui)) &&
($function == '' || $GLOBALS['phpgw_info']['etemplate']['extension'][$type]->public_functions[$function]); ($function == '' || $GLOBALS['egw_info']['etemplate']['extension'][$type]->public_functions[$function]);
} }
/** /**
@ -509,8 +509,8 @@
{ {
return False; return False;
} }
return $GLOBALS['phpgw_info']['etemplate']['extension'][$type]->pre_process($name,$value,$cell,$readonlys, return $GLOBALS['egw_info']['etemplate']['extension'][$type]->pre_process($name,$value,$cell,$readonlys,
$GLOBALS['phpgw_info']['etemplate']['extension_data'][$name],$this); $GLOBALS['egw_info']['etemplate']['extension_data'][$name],$this);
} }
/** /**
@ -528,9 +528,9 @@
{ {
return True; return True;
} }
return $GLOBALS['phpgw_info']['etemplate']['extension'][$type]->post_process($name,$value, return $GLOBALS['egw_info']['etemplate']['extension'][$type]->post_process($name,$value,
$GLOBALS['phpgw_info']['etemplate']['extension_data'][$name], $GLOBALS['egw_info']['etemplate']['extension_data'][$name],
$GLOBALS['phpgw_info']['etemplate']['loop'],$this,$value_in); $GLOBALS['egw_info']['etemplate']['loop'],$this,$value_in);
} }
/** /**
@ -549,8 +549,8 @@
{ {
return False; return False;
} }
return $GLOBALS['phpgw_info']['etemplate']['extension'][$type]->render($cell,$name,$value,$readonly, return $GLOBALS['egw_info']['etemplate']['extension'][$type]->render($cell,$name,$value,$readonly,
$GLOBALS['phpgw_info']['etemplate']['extension_data'][$name],$this); $GLOBALS['egw_info']['etemplate']['extension_data'][$name],$this);
} }
/** /**
@ -754,7 +754,7 @@
function store_in_cache() function store_in_cache()
{ {
//echo "<p>store_in_cache('$this->name','$this->template','$this->lang','$this->version')</p>\n"; //echo "<p>store_in_cache('$this->name','$this->template','$this->lang','$this->version')</p>\n";
$GLOBALS['phpgw_info']['etemplate']['cache'][$this->cache_name()] = $this->as_array(1); $GLOBALS['egw_info']['etemplate']['cache'][$this->cache_name()] = $this->as_array(1);
} }
/** /**
@ -763,7 +763,7 @@
function delete_in_cache() function delete_in_cache()
{ {
//echo "<p>delete_in_cache('$this->name','$this->template','$this->lang','$this->version')</p>\n"; //echo "<p>delete_in_cache('$this->name','$this->template','$this->lang','$this->version')</p>\n";
unset($GLOBALS['phpgw_info']['etemplate']['cache'][$this->cache_name()]); unset($GLOBALS['egw_info']['etemplate']['cache'][$this->cache_name()]);
} }
/* /*
@ -784,8 +784,8 @@
$version = $name['version']; $version = $name['version'];
$name = $name['name']; $name = $name['name'];
} }
if (!isset($GLOBALS['phpgw_info']['etemplate']['cache'][$cname]) || if (!isset($GLOBALS['egw_info']['etemplate']['cache'][$cname]) ||
!empty($version) && $GLOBALS['phpgw_info']['etemplate']['cache'][$cname]['version'] != $version) !empty($version) && $GLOBALS['egw_info']['etemplate']['cache'][$cname]['version'] != $version)
{ {
//echo " NOT found in cache</p>\n"; //echo " NOT found in cache</p>\n";
return False; return False;
@ -811,7 +811,7 @@
//if (is_array($name)) $version = $name['version']; echo "<p>read_from_cache(,,,version='$version'): "; //if (is_array($name)) $version = $name['version']; echo "<p>read_from_cache(,,,version='$version'): ";
if ($cname = $this->in_cache($name,$template,$lang,$group)) if ($cname = $this->in_cache($name,$template,$lang,$group))
{ {
$this->init($GLOBALS['phpgw_info']['etemplate']['cache'][$cname]); $this->init($GLOBALS['egw_info']['etemplate']['cache'][$cname]);
return True; return True;
} }

View File

@ -24,13 +24,22 @@
/* $Id$ */ /* $Id$ */
define('EGW_SESSION_VAR','egw_session'); // where to store our session-data $_SESSION[EGW_SESSION_VAR]
/**
* Session Management via php4 sessions
*
* @package api
* @subpackage sessions
*/
class sessions extends sessions_ class sessions extends sessions_
{ {
function sessions($domain_names=null) function sessions($domain_names=null)
{ {
$this->sessions_($domain_names); $this->sessions_($domain_names);
//controls the time out for php4 sessions - skwashd 18-May-2003 //controls the time out for php4 sessions - skwashd 18-May-2003
ini_set('session.gc_maxlifetime', $GLOBALS['phpgw_info']['server']['sessions_timeout']); ini_set('session.gc_maxlifetime', $GLOBALS['egw_info']['server']['sessions_timeout']);
session_name('sessionid'); session_name('sessionid');
} }
@ -42,7 +51,7 @@
} }
session_id($this->sessionid); session_id($this->sessionid);
session_start(); session_start();
return $_SESSION['egw']; return $_SESSION[EGW_SESSION_VAR];
} }
function set_cookie_params($domain) function set_cookie_params($domain)
@ -60,15 +69,15 @@
function register_session($login,$user_ip,$now,$session_flags) function register_session($login,$user_ip,$now,$session_flags)
{ {
// session_start() is now called in new_session_id() !!! // session_start() is now called in new_session_id() !!!
$_SESSION['egw']['session_id'] = $this->sessionid; $_SESSION[EGW_SESSION_VAR]['session_id'] = $this->sessionid;
$_SESSION['egw']['session_lid'] = $login; $_SESSION[EGW_SESSION_VAR]['session_lid'] = $login;
$_SESSION['egw']['session_ip'] = $user_ip; $_SESSION[EGW_SESSION_VAR]['session_ip'] = $user_ip;
$_SESSION['egw']['session_logintime'] = $now; $_SESSION[EGW_SESSION_VAR]['session_logintime'] = $now;
$_SESSION['egw']['session_dla'] = $now; $_SESSION[EGW_SESSION_VAR]['session_dla'] = $now;
$_SESSION['egw']['session_action'] = $_SERVER['PHP_SELF']; $_SESSION[EGW_SESSION_VAR]['session_action'] = $_SERVER['PHP_SELF'];
$_SESSION['egw']['session_flags'] = $session_flags; $_SESSION[EGW_SESSION_VAR]['session_flags'] = $session_flags;
// we need the install-id to differ between serveral installs shareing one tmp-dir // we need the install-id to differ between serveral installs shareing one tmp-dir
$_SESSION['egw']['session_install_id'] = $GLOBALS['phpgw_info']['server']['install_id']; $_SESSION[EGW_SESSION_VAR]['session_install_id'] = $GLOBALS['egw_info']['server']['install_id'];
} }
// This will update the DateLastActive column, so the login does not expire // This will update the DateLastActive column, so the login does not expire
@ -90,8 +99,8 @@
$action = $this->xmlrpc_method_called; $action = $this->xmlrpc_method_called;
} }
$_SESSION['egw']['session_dla'] = time(); $_SESSION[EGW_SESSION_VAR]['session_dla'] = time();
$_SESSION['egw']['session_action'] = $action; $_SESSION[EGW_SESSION_VAR]['session_action'] = $action;
return True; return True;
} }
@ -106,12 +115,12 @@
$this->log_access($this->sessionid); // log logout-time $this->log_access($this->sessionid); // log logout-time
// Only do the following, if where working with the current user // Only do the following, if where working with the current user
if ($sessionid == $GLOBALS['phpgw_info']['user']['sessionid']) if ($sessionid == $GLOBALS['egw_info']['user']['sessionid'])
{ {
session_unset(); session_unset();
//echo "<p>sessions_php4::destroy: session_destroy() returned ".(session_destroy() ? 'True' : 'False')."</p>\n"; //echo "<p>sessions_php4::destroy: session_destroy() returned ".(session_destroy() ? 'True' : 'False')."</p>\n";
@session_destroy(); @session_destroy();
if ($GLOBALS['phpgw_info']['server']['usecookies']) if ($GLOBALS['egw_info']['server']['usecookies'])
{ {
$this->phpgw_setcookie(session_name()); $this->phpgw_setcookie(session_name());
} }
@ -137,38 +146,38 @@
{ {
$account_id = get_account_id($accountid,$this->account_id); $account_id = get_account_id($accountid,$this->account_id);
$_SESSION['egw']['app_sessions']['phpgwapi']['phpgw_info_cache'] = ''; $_SESSION[EGW_SESSION_VAR]['app_sessions']['phpgwapi']['phpgw_info_cache'] = '';
} }
function appsession($location = 'default', $appname = '', $data = '##NOTHING##') function appsession($location = 'default', $appname = '', $data = '##NOTHING##')
{ {
if (! $appname) if (! $appname)
{ {
$appname = $GLOBALS['phpgw_info']['flags']['currentapp']; $appname = $GLOBALS['egw_info']['flags']['currentapp'];
} }
/* This allows the user to put '' as the value. */ /* This allows the user to put '' as the value. */
if ($data == '##NOTHING##') if ($data == '##NOTHING##')
{ {
/* do not decrypt and return if no data (decrypt returning garbage) */ /* do not decrypt and return if no data (decrypt returning garbage) */
if($_SESSION['egw']['app_sessions'][$appname][$location]) if($_SESSION[EGW_SESSION_VAR]['app_sessions'][$appname][$location])
{ {
return $GLOBALS['phpgw']->crypto->decrypt($_SESSION['egw']['app_sessions'][$appname][$location]); return $GLOBALS['egw']->crypto->decrypt($_SESSION[EGW_SESSION_VAR]['app_sessions'][$appname][$location]);
} }
return false; return false;
} }
$_SESSION['egw']['app_sessions'][$appname][$location] = $GLOBALS['phpgw']->crypto->encrypt($data); $_SESSION[EGW_SESSION_VAR]['app_sessions'][$appname][$location] = $GLOBALS['egw']->crypto->encrypt($data);
return $data; return $data;
} }
function session_sort($a,$b) function session_sort($a,$b)
{ {
$sign = strcasecmp($GLOBALS['phpgw']->session->sort_order,'ASC') ? 1 : -1; $sign = strcasecmp($GLOBALS['egw']->session->sort_order,'ASC') ? 1 : -1;
return strcasecmp( return strcasecmp(
$a[$GLOBALS['phpgw']->session->sort_by], $a[$GLOBALS['egw']->session->sort_by],
$b[$GLOBALS['phpgw']->session->sort_by] $b[$GLOBALS['egw']->session->sort_by]
) * $sign; ) * $sign;
} }
@ -181,10 +190,10 @@
function list_sessions($start,$order,$sort,$all_no_sort = False) function list_sessions($start,$order,$sort,$all_no_sort = False)
{ {
//echo "<p>session_php4::list_sessions($start,'$order','$sort',$all)</p>\n"; //echo "<p>session_php4::list_sessions($start,'$order','$sort',$all)</p>\n";
$session_cache = $this->appsession('php4_session_cache','phpgwapi'); //$session_cache = $this->appsession('php4_session_cache','phpgwapi');
$values = array(); $values = array();
$maxmatchs = $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']; $maxmatchs = $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
$dir = @opendir($path = ini_get('session.save_path')); $dir = @opendir($path = ini_get('session.save_path'));
if (!$dir) // eg. openbasedir restrictions if (!$dir) // eg. openbasedir restrictions
{ {
@ -217,17 +226,17 @@
$session = ($size = filesize ($path . '/' . $file)) ? fread ($fd, $size) : 0; $session = ($size = filesize ($path . '/' . $file)) ? fread ($fd, $size) : 0;
fclose ($fd); fclose ($fd);
} }
if (substr($session,0,4) != 'egw|') if (substr($session,0,1+strlen(EGW_SESSION_VAR)) != EGW_SESSION_VAR.'|')
{ {
$session_cache[$file] = false; // dont try reading it again $session_cache[$file] = false; // dont try reading it again
continue; continue;
} }
$session = unserialize(substr($session,4)); $session = unserialize(substr($session,1+strlen(EGW_SESSION_VAR)));
unset($session['app_sessions']); // not needed, saves memory unset($session['app_sessions']); // not needed, saves memory
$session_cache[$file] = $session; $session_cache[$file] = $session;
} }
if($session['session_flags'] == 'A' || !$session['session_id'] || if($session['session_flags'] == 'A' || !$session['session_id'] ||
$session['session_install_id'] != $GLOBALS['phpgw_info']['server']['install_id']) $session['session_install_id'] != $GLOBALS['egw_info']['server']['install_id'])
{ {
$session_cache[$file] = false; // dont try reading it again $session_cache[$file] = false; // dont try reading it again
continue; // no anonymous sessions or other domains or installations continue; // no anonymous sessions or other domains or installations
@ -241,8 +250,8 @@
if(!$all_no_sort) if(!$all_no_sort)
{ {
$GLOBALS['phpgw']->session->sort_by = $sort; $GLOBALS['egw']->session->sort_by = $sort;
$GLOBALS['phpgw']->session->sort_order = $order; $GLOBALS['egw']->session->sort_order = $order;
uasort($values,array('sessions','session_sort')); uasort($values,array('sessions','session_sort'));