diff --git a/phpgwapi/inc/class.sessions.inc.php b/phpgwapi/inc/class.sessions.inc.php
index bb63db6806..74011ba3a6 100644
--- a/phpgwapi/inc/class.sessions.inc.php
+++ b/phpgwapi/inc/class.sessions.inc.php
@@ -21,69 +21,73 @@
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
\**************************************************************************/
- /* $Id$ */
+ /* $Id$ */
- class sessions
- {
- var $login;
- var $passwd;
- var $account_id;
- var $account_lid;
- var $account_domain;
- var $sessionid;
- var $kp3;
- var $data;
- var $db;
- var $db2;
+ class sessions
+ {
+ var $login;
+ var $passwd;
+ var $account_id;
+ var $account_lid;
+ var $account_domain;
+ var $sessionid;
+ var $kp3;
+ var $data;
+ var $db;
+ var $db2;
/*************************************************************************\
* Constructor just loads up some defaults from cookies *
\*************************************************************************/
- function sessions()
- {
- global $phpgw, $phpgw_info, $sessionid, $kp3;
+ function sessions()
+ {
+ global $phpgw, $phpgw_info, $sessionid, $kp3;
- $this->db = $phpgw->db;
- $this->db2 = $phpgw->db;
- $this->sessionid = $sessionid;
- $this->kp3 = $kp3;
- }
+ $this->db = $phpgw->db;
+ $this->db2 = $phpgw->db;
+ $this->sessionid = $sessionid;
+ $this->kp3 = $kp3;
+ }
/*************************************************************************\
* Functions for creating and verifying the session *
\*************************************************************************/
- function getuser_ip()
- {
- global $REMOTE_ADDR, $HTTP_X_FORWARDED_FOR;
+ function getuser_ip()
+ {
+ global $REMOTE_ADDR, $HTTP_X_FORWARDED_FOR;
- if ($HTTP_X_FORWARDED_FOR) {
- return $HTTP_X_FORWARDED_FOR;
- } else {
- return $REMOTE_ADDR;
- }
- }
+ if ($HTTP_X_FORWARDED_FOR)
+ {
+ return $HTTP_X_FORWARDED_FOR;
+ }
+ else
+ {
+ return $REMOTE_ADDR;
+ }
+ }
- function verify()
- {
- global $phpgw, $phpgw_info, $sessionid, $kp3;
+ function verify()
+ {
+ global $phpgw, $phpgw_info, $sessionid, $kp3;
- $db = $phpgw->db;
- $db2 = $phpgw->db;
- $this->sessionid = $sessionid;
- $this->kp3 = $kp3;
+ $db = $phpgw->db;
+ $db2 = $phpgw->db;
+ $this->sessionid = $sessionid;
+ $this->kp3 = $kp3;
- $phpgw->common->key = md5($this->kp3 . $this->sessionid . $phpgw_info['server']['encryptkey']);
- $phpgw->common->iv = $phpgw_info['server']['mcrypt_iv'];
+ $phpgw->common->key = md5($this->kp3 . $this->sessionid . $phpgw_info['server']['encryptkey']);
+ $phpgw->common->iv = $phpgw_info['server']['mcrypt_iv'];
- $cryptovars[0] = $phpgw->common->key;
- $cryptovars[1] = $phpgw->common->iv;
- $phpgw->crypto = CreateObject('phpgwapi.crypto', $cryptovars);
+ $cryptovars[0] = $phpgw->common->key;
+ $cryptovars[1] = $phpgw->common->iv;
+ $phpgw->crypto = CreateObject('phpgwapi.crypto', $cryptovars);
- $db->query("select * from phpgw_sessions where session_id='" . $this->sessionid . "'",__LINE__,__FILE__);
- $db->next_record();
+ $db->query("select * from phpgw_sessions where session_id='" . $this->sessionid . "'",__LINE__,__FILE__);
+ $db->next_record();
- // This is going to be replace with the session_flag field
- if ($db->f('session_info') == '' || $db->f('session_info') == 'NULL') {
+ // This is going to be replace with the session_flag field
+ if ($db->f('session_info') == '' || $db->f('session_info') == 'NULL')
+ {
/* $this->account_lid = $db->f('session_lid');
$phpgw_info['user']['sessionid'] = $this->sessionid;
$phpgw_info['user']['session_ip'] = $db->f('session_ip');
@@ -94,292 +98,321 @@
// Now we need to re-read eveything
$db->query("select * from phpgw_sessions where session_id='$this->sessionid'",__LINE__,__FILE__);
$db->next_record(); */
- }
+ }
- $login_array = explode('@', $db->f('session_lid'));
- $this->account_lid = $login_array[0];
+ $login_array = explode('@', $db->f('session_lid'));
+ $this->account_lid = $login_array[0];
- if ($login_array[1]!='') {
- $this->account_domain = $login_array[1];
- } else {
- $this->account_domain = $phpgw_info['server']['default_domain'];
- }
+ if ($login_array[1] != '')
+ {
+ $this->account_domain = $login_array[1];
+ }
+ else
+ {
+ $this->account_domain = $phpgw_info['server']['default_domain'];
+ }
- $phpgw_info['user']['kp3'] = $this->kp3;
- $phpgw_info_flags = $phpgw_info['flags'];
+ $phpgw_info['user']['kp3'] = $this->kp3;
+ $phpgw_info_flags = $phpgw_info['flags'];
- $phpgw_info['flags'] = $phpgw_info_flags;
- $userid_array = explode('@',$db->f('session_lid'));
- $this->account_lid = $userid_array[0];
- $this->update_dla();
- $this->account_id = $phpgw->accounts->name2id($this->account_lid);
+ $phpgw_info['flags'] = $phpgw_info_flags;
+ $userid_array = explode('@',$db->f('session_lid'));
+ $this->account_lid = $userid_array[0];
+ $this->update_dla();
+ $this->account_id = $phpgw->accounts->name2id($this->account_lid);
- if ($phpgw_info['server']['cache_phpgw_info']) {
- $t = $this->appsession('phpgw_info_cache','phpgwapi');
- $phpgw_info['server'] = $t['server'];
- $phpgw_info['user'] = $t['user'];
- $phpgw_info['hooks'] = $t['hooks'];
- } else {
- $this->read_repositories();
- $phpgw_info['user'] = $this->user;
- $phpgw_info['hooks'] = $this->hooks;
- }
+ if ($phpgw_info['server']['cache_phpgw_info'])
+ {
+ $t = $this->appsession('phpgw_info_cache','phpgwapi');
+ $phpgw_info['server'] = $t['server'];
+ $phpgw_info['user'] = $t['user'];
+ $phpgw_info['hooks'] = $t['hooks'];
+ }
+ else
+ {
+ $this->read_repositories();
+ $phpgw_info['user'] = $this->user;
+ $phpgw_info['hooks'] = $this->hooks;
+ }
- $phpgw_info['user']['session_ip'] = $db->f('session_ip');
- $phpgw_info['user']['passwd'] = $this->appsession('password','phpgwapi');
+ $phpgw_info['user']['session_ip'] = $db->f('session_ip');
+ $phpgw_info['user']['passwd'] = $this->appsession('password','phpgwapi');
- if ($userid_array[1] != $phpgw_info['user']['domain']) {
- return False;
- }
+ if ($userid_array[1] != $phpgw_info['user']['domain'])
+ {
+ return False;
+ }
- if (PHP_OS != 'Windows' && (! $phpgw_info['user']['session_ip'] || $phpgw_info['user']['session_ip'] != $this->getuser_ip())){
- return False;
- }
+ if (PHP_OS != 'Windows' && (! $phpgw_info['user']['session_ip'] || $phpgw_info['user']['session_ip'] != $this->getuser_ip()))
+ {
+ return False;
+ }
- $phpgw->acl->acl($this->account_id);
- $phpgw->accounts->accounts($this->account_id);
- $phpgw->preferences->preferences($this->account_id);
- $phpgw->applications->applications($this->account_id);
+ $phpgw->acl->acl($this->account_id);
+ $phpgw->accounts->accounts($this->account_id);
+ $phpgw->preferences->preferences($this->account_id);
+ $phpgw->applications->applications($this->account_id);
- if (! $this->account_lid ) {
- return False;
- } else {
- return True;
- }
- }
+ if (! $this->account_lid)
+ {
+ return False;
+ }
+ else
+ {
+ return True;
+ }
+ }
- // This will remove stale sessions out of the database
- function clean_sessions()
- {
- global $phpgw_info, $phpgw;
+ // This will remove stale sessions out of the database
+ function clean_sessions()
+ {
+ global $phpgw_info, $phpgw;
- if (!isset($phpgw_info['server']['cron_apps']) || ! $phpgw_info['server']['cron_apps']) {
- $phpgw->db->query("delete from phpgw_sessions where session_dla <= '" . (time() - 7200)
- . "'",__LINE__,__FILE__);
- }
- }
+ if (!isset($phpgw_info['server']['cron_apps']) || ! $phpgw_info['server']['cron_apps'])
+ {
+ $phpgw->db->query("delete from phpgw_sessions where session_dla <= '" . (time() - 7200)
+ . "'",__LINE__,__FILE__);
+ }
+ }
- function create($login,$passwd)
- {
- global $phpgw_info, $phpgw;
- $this->login = $login;
- $this->clean_sessions();
- $login_array = explode('@', $login);
- $this->account_lid = $login_array[0];
- $now = time();
+ function create($login,$passwd)
+ {
+ global $phpgw_info, $phpgw;
- if ($login_array[1]!='') {
- $this->account_domain = $login_array[1];
- } else {
- $this->account_domain = $phpgw_info['server']['default_domain'];
- }
+ $this->login = $login;
+ $this->clean_sessions();
+ $login_array = explode('@', $login);
+ $this->account_lid = $login_array[0];
+ $now = time();
- if ($phpgw_info['server']['global_denied_users'][$this->account_lid]) {
- return False;
- }
+ if ($login_array[1] != '')
+ {
+ $this->account_domain = $login_array[1];
+ }
+ else
+ {
+ $this->account_domain = $phpgw_info['server']['default_domain'];
+ }
- if (! $phpgw->auth->authenticate($this->account_lid, $passwd)) {
- return False;
- exit;
- }
+ if ($phpgw_info['server']['global_denied_users'][$this->account_lid])
+ {
+ return False;
+ }
- if (!$phpgw->accounts->exists($this->account_lid) && $phpgw_info['server']['auto_create_acct'] == True) {
- $this->account_id = $phpgw->accounts->auto_add($this->account_lid, $passwd);
- } else {
- $this->account_id = $phpgw->accounts->name2id($this->account_lid);
- }
- $phpgw->accounts->account_id = $this->account_id;
+ if (! $phpgw->auth->authenticate($this->account_lid, $passwd))
+ {
+ return False;
+ exit;
+ }
- $this->sessionid = md5($phpgw->common->randomstring(10));
- $this->kp3 = md5($phpgw->common->randomstring(15));
+ if (!$phpgw->accounts->exists($this->account_lid) && $phpgw_info['server']['auto_create_acct'] == True)
+ {
+ $this->account_id = $phpgw->accounts->auto_add($this->account_lid, $passwd);
+ }
+ else
+ {
+ $this->account_id = $phpgw->accounts->name2id($this->account_lid);
+ }
+ $phpgw->accounts->account_id = $this->account_id;
- $phpgw->common->key = md5($this->kp3 . $this->sessionid . $phpgw_info['server']['encryptkey']);
- $phpgw->common->iv = $phpgw_info['server']['mcrypt_iv'];
- $cryptovars[0] = $phpgw->common->key;
- $cryptovars[1] = $phpgw->common->iv;
- $phpgw->crypto = CreateObject('phpgwapi.crypto', $cryptovars);
+ $this->sessionid = md5($phpgw->common->randomstring(10));
+ $this->kp3 = md5($phpgw->common->randomstring(15));
- if ($phpgw_info['server']['usecookies']) {
- Setcookie('sessionid',$this->sessionid);
- Setcookie('kp3',$this->kp3);
- Setcookie('domain',$this->account_domain);
- Setcookie('last_domain',$this->account_domain,$now+1209600);
- if ($this->account_domain == $phpgw_info['server']['default_domain']) {
- Setcookie('last_loginid', $this->account_lid ,$now+1209600); // For 2 weeks
- } else {
- Setcookie('last_loginid', $login ,$now+1209600); // For 2 weeks
- }
- unset ($phpgw_info['server']['default_domain']); // we kill this for security reasons
- }
+ $phpgw->common->key = md5($this->kp3 . $this->sessionid . $phpgw_info['server']['encryptkey']);
+ $phpgw->common->iv = $phpgw_info['server']['mcrypt_iv'];
+ $cryptovars[0] = $phpgw->common->key;
+ $cryptovars[1] = $phpgw->common->iv;
+ $phpgw->crypto = CreateObject('phpgwapi.crypto', $cryptovars);
- $this->read_repositories();
- $phpgw_info['user'] = $this->user;
- $phpgw_info['hooks'] = $this->hooks;
- if ($phpgw_info['server']['cache_phpgw_info']) {
- $this->appsession('phpgw_info_cache','phpgwapi',$phpgw_info);
+ if ($phpgw_info['server']['usecookies'])
+ {
+ Setcookie('sessionid',$this->sessionid);
+ Setcookie('kp3',$this->kp3);
+ Setcookie('domain',$this->account_domain);
+ Setcookie('last_domain',$this->account_domain,$now+1209600);
+ if ($this->account_domain == $phpgw_info['server']['default_domain'])
+ {
+ Setcookie('last_loginid', $this->account_lid ,$now+1209600); // For 2 weeks
+ }
+ else
+ {
+ Setcookie('last_loginid', $login ,$now+1209600); // For 2 weeks
+ }
+ unset ($phpgw_info['server']['default_domain']); // we kill this for security reasons
+ }
+
+ $this->read_repositories();
+ $phpgw_info['user'] = $this->user;
+ $phpgw_info['hooks'] = $this->hooks;
+ if ($phpgw_info['server']['cache_phpgw_info'])
+ {
+ $this->appsession('phpgw_info_cache','phpgwapi',$phpgw_info);
}
// If they are not useing cache, we need to store it somewhere
$this->passwd = $this->appsession('password','phpgwapi',$passwd);
- $phpgw->db->query("insert into phpgw_sessions values ('" . $this->sessionid
- . "','".$login."','" . $this->getuser_ip() . "','"
- . $now . "','" . $now . "','".$info_string."')",__LINE__,__FILE__);
+ $phpgw->db->query("insert into phpgw_sessions values ('" . $this->sessionid
+ . "','".$login."','" . $this->getuser_ip() . "','"
+ . $now . "','" . $now . "','".$info_string."')",__LINE__,__FILE__);
- $phpgw->db->query("insert into phpgw_access_log values ('" . $this->sessionid . "','"
- . "$login','" . $this->getuser_ip() . "','" . $now
- . "','') ",__LINE__,__FILE__);
+ $phpgw->db->query("insert into phpgw_access_log values ('" . $this->sessionid . "','"
+ . "$login','" . $this->getuser_ip() . "','$now','') ",__LINE__,__FILE__);
- $phpgw->auth->update_lastlogin($this->account_id,$this->getuser_ip());
+ $phpgw->auth->update_lastlogin($this->account_id,$this->getuser_ip());
- return $this->sessionid;
- }
+ return $this->sessionid;
+ }
- // This will update the DateLastActive column, so the login does not expire
- function update_dla()
- {
- global $phpgw_info, $phpgw, $PHP_SELF;
-
- $phpgw->db->query("update phpgw_sessions set session_dla='" . time() . "', session_action='$PHP_SELF'"
- . " where session_id='" . $this->sessionid."'",__LINE__,__FILE__);
- }
+ // This will update the DateLastActive column, so the login does not expire
+ function update_dla()
+ {
+ global $phpgw_info, $phpgw, $PHP_SELF;
+
+ $phpgw->db->query("update phpgw_sessions set session_dla='" . time() . "', session_action='$PHP_SELF'"
+ . " where session_id='" . $this->sessionid."'",__LINE__,__FILE__);
+ }
- function destroy()
- {
- global $phpgw, $phpgw_info, $sessionid, $kp3;
- $phpgw_info['user']['sessionid'] = $sessionid;
- $phpgw_info['user']['kp3'] = $kp3;
-
- $phpgw->db->query("delete from phpgw_sessions where session_id='"
- . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
- $phpgw->db->query("delete from phpgw_app_sessions where sessionid='"
- . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
- $phpgw->db->query("update phpgw_access_log set lo='" . time() . "' where sessionid='"
- . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
- if ($phpgw_info['server']['usecookies']) {
- Setcookie('sessionid');
- Setcookie('kp3');
- if ($phpgw_info['multiable_domains']) {
- Setcookie('domain');
- }
- }
- $this->clean_sessions();
- return True;
- }
+ function destroy()
+ {
+ global $phpgw, $phpgw_info, $sessionid, $kp3;
+ $phpgw_info['user']['sessionid'] = $sessionid;
+ $phpgw_info['user']['kp3'] = $kp3;
+
+ $phpgw->db->query("delete from phpgw_sessions where session_id='"
+ . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
+ $phpgw->db->query("delete from phpgw_app_sessions where sessionid='"
+ . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
+ $phpgw->db->query("update phpgw_access_log set lo='" . time() . "' where sessionid='"
+ . $phpgw_info['user']['sessionid'] . "'",__LINE__,__FILE__);
+ if ($phpgw_info['server']['usecookies'])
+ {
+ Setcookie('sessionid');
+ Setcookie('kp3');
+ if ($phpgw_info['multiable_domains'])
+ {
+ Setcookie('domain');
+ }
+ }
+ $this->clean_sessions();
+ return True;
+ }
/*************************************************************************\
* Functions for appsession data and session cache *
\*************************************************************************/
- function read_repositories()
- {
- global $phpgw;
- $phpgw->acl->acl($this->account_id);
- $phpgw->accounts->accounts($this->account_id);
- $phpgw->preferences->preferences($this->account_id);
- $phpgw->applications->applications($this->account_id);
-
- $this->user = $phpgw->accounts->read_repository();
- $this->user['acl'] = $phpgw->acl->read_repository();
- $this->user['preferences'] = $phpgw->preferences->read_repository();
- $this->user['apps'] = $phpgw->applications->read_repository();
- //@reset($this->data['user']['apps']);
-
- $this->user['domain'] = $this->account_domain;
- $this->user['sessionid'] = $this->sessionid;
- $this->user['kp3'] = $this->kp3;
- $this->user['session_ip'] = $this->getuser_ip();
- $this->user['session_lid'] = $this->account_lid.'@'.$this->account_domain;
- $this->user['account_id'] = $this->account_id;
- $this->user['account_lid'] = $this->account_lid;
- $this->user['userid'] = $this->account_lid;
- $this->user['passwd'] = $this->passwd;
- $this->hooks = $phpgw->hooks->read();
- }
-
- function save_repositories()
- {
- global $phpgw, $phpgw_info;
-
- $phpgw_info_temp = $phpgw_info;
- $phpgw_info_temp['user']['kp3'] = '';
- $phpgw_info_temp['flags'] = array();
-
- if ($phpgw_info['server']['cache_phpgw_info']) {
- $this->appsession('phpgw_info_cache','phpgwapi',$phpgw_info_temp);
- }
- }
-
- function appsession($location = "default", $appname = "", $data = "##NOTHING##")
- {
- global $phpgw_info, $phpgw;
-
- if (! $appname) {
- $appname = $phpgw_info['flags']['currentapp'];
- }
-
- /* This allows the user to put "" as the value. */
- if ($data == "##NOTHING##") {
- $query = 'select content from phpgw_app_sessions where'
- .' sessionid = "'.$this->sessionid.'" and loginid = "'.$this->account_id.'"'
- .' and app = "'.$appname.'" and location = "'.$location.'"';
-
- $phpgw->db->query($query,__LINE__,__FILE__);
-
- $phpgw->db->next_record();
- $data = $phpgw->db->f("content");
- #$data = $phpgw->common->decrypt($data);
- return $data;
- } else {
- $phpgw->db->query('select content from phpgw_app_sessions where '
- . 'sessionid = "'.$this->sessionid.'" and loginid = "'.$this->account_id.'" '
- . 'and app = "'.$appname.'" and location = "'.$location.'"',__LINE__,__FILE__);
-
- if ($phpgw->db->num_rows()==0) {
-# some how the next line is not working correctly! knecke
-# $data = addslashes($phpgw->crypto->encrypt(serialize($data)));
- $data = addslashes(serialize($data));
- $phpgw->db->query('INSERT INTO phpgw_app_sessions (sessionid,loginid,app,location,content) '
- . 'VALUES ("'.$this->sessionid.'","'.$this->account_id.'","'.$appname
- . '","'.$location.'","'.$data.'")',__LINE__,__FILE__);
- } else {
-# some how the next line is not working correctly! knecke
-# $data = addslashes($phpgw->crypto->encrypt(serialize($data)));
- $data = addslashes(serialize($data));
- $phpgw->db->query('update phpgw_app_sessions set content = "'.$data.'" '
- . 'where sessionid = "'.$this->sessionid.'" '
- . 'and loginid = "'.$this->account_id.'" and app = "'.$appname.'" '
- . 'and location = "'.$location.'"',__LINE__,__FILE__);
- }
-
- return $data;
- }
- }
-
- function restore()
- {
- global $phpgw;
-
- $serializedData = $phpgw->common->appsession();
- $sessionData = unserialize($serializedData);
-
- if (is_array($sessionData))
+ function read_repositories()
{
- reset($sessionData);
- while(list($key,$value) = each($sessionData))
+ global $phpgw;
+ $phpgw->acl->acl($this->account_id);
+ $phpgw->accounts->accounts($this->account_id);
+ $phpgw->preferences->preferences($this->account_id);
+ $phpgw->applications->applications($this->account_id);
+
+ $this->user = $phpgw->accounts->read_repository();
+ $this->user['acl'] = $phpgw->acl->read_repository();
+ $this->user['preferences'] = $phpgw->preferences->read_repository();
+ $this->user['apps'] = $phpgw->applications->read_repository();
+ //@reset($this->data['user']['apps']);
+
+ $this->user['domain'] = $this->account_domain;
+ $this->user['sessionid'] = $this->sessionid;
+ $this->user['kp3'] = $this->kp3;
+ $this->user['session_ip'] = $this->getuser_ip();
+ $this->user['session_lid'] = $this->account_lid.'@'.$this->account_domain;
+ $this->user['account_id'] = $this->account_id;
+ $this->user['account_lid'] = $this->account_lid;
+ $this->user['userid'] = $this->account_lid;
+ $this->user['passwd'] = $this->passwd;
+ $this->hooks = $phpgw->hooks->read();
+ }
+
+ function save_repositories()
+ {
+ global $phpgw, $phpgw_info;
+
+ $phpgw_info_temp = $phpgw_info;
+ $phpgw_info_temp['user']['kp3'] = '';
+ $phpgw_info_temp['flags'] = array();
+
+ if ($phpgw_info['server']['cache_phpgw_info'])
{
- global $$key;
- $$key = $value;
- $this->variableNames[$key]="registered";
- #print "restored: ".$key.", $value
";
+ $this->appsession('phpgw_info_cache','phpgwapi',$phpgw_info_temp);
+ }
+ }
+
+ function appsession($location = 'default', $appname = '', $data = '##NOTHING##')
+ {
+ global $phpgw_info, $phpgw;
+
+ if (! $appname)
+ {
+ $appname = $phpgw_info['flags']['currentapp'];
+ }
+
+ /* This allows the user to put "" as the value. */
+ if ($data == '##NOTHING##') {
+ $query = 'select content from phpgw_app_sessions where'
+ .' sessionid = "'.$this->sessionid.'" and loginid = "'.$this->account_id.'"'
+ .' and app = "'.$appname.'" and location = "'.$location.'"';
+
+ $phpgw->db->query($query,__LINE__,__FILE__);
+
+ $phpgw->db->next_record();
+ $data = $phpgw->db->f('content');
+ #$data = $phpgw->common->decrypt($data);
+ return $data;
+ } else {
+ $phpgw->db->query('select content from phpgw_app_sessions where '
+ . 'sessionid = "'.$this->sessionid.'" and loginid = "'.$this->account_id.'" '
+ . 'and app = "'.$appname.'" and location = "'.$location.'"',__LINE__,__FILE__);
+
+ if ($phpgw->db->num_rows()==0) {
+ # some how the next line is not working correctly! knecke
+ # $data = addslashes($phpgw->crypto->encrypt(serialize($data)));
+ $data = addslashes(serialize($data));
+ $phpgw->db->query('INSERT INTO phpgw_app_sessions (sessionid,loginid,app,location,content) '
+ . 'VALUES ("'.$this->sessionid.'","'.$this->account_id.'","'.$appname
+ . '","'.$location.'","'.$data.'")',__LINE__,__FILE__);
+ } else {
+ # some how the next line is not working correctly! knecke
+ # $data = addslashes($phpgw->crypto->encrypt(serialize($data)));
+ $data = addslashes(serialize($data));
+ $phpgw->db->query('update phpgw_app_sessions set content = "'.$data.'" '
+ . 'where sessionid = "'.$this->sessionid.'" '
+ . 'and loginid = "'.$this->account_id.'" and app = "'.$appname.'" '
+ . 'and location = "'.$location.'"',__LINE__,__FILE__);
+ }
+
+ return $data;
}
}
- }
+ function restore()
+ {
+ global $phpgw;
+
+ $serializedData = $phpgw->common->appsession();
+ $sessionData = unserialize($serializedData);
+
+ if (is_array($sessionData))
+ {
+ reset($sessionData);
+ while(list($key,$value) = each($sessionData))
+ {
+ global $$key;
+ $$key = $value;
+ $this->variableNames[$key] = 'registered';
+ #print "restored: ".$key.", $value
";
+ }
+ }
+ }
+
// save the current values of the variables
function save()
{
global $phpgw;
-
+
if (is_array($this->variableNames))
{
reset($this->variableNames);
@@ -394,21 +427,21 @@
$phpgw->common->appsession($sessionData);
}
}
-
+
// create a list a variable names, wich data need's to be restored
function register($_variableName)
{
$this->variableNames[$_variableName]='registered';
#print 'registered '.$_variableName.'
';
}
-
+
// mark variable as unregistered
function unregister($_variableName)
{
$this->variableNames[$_variableName]='unregistered';
#print 'unregistered '.$_variableName.'
';
}
-
+
// check if we have a variable registred already
function is_registered($_variableName)
{
@@ -422,23 +455,28 @@
}
}
-
/*************************************************************************\
* Function to handle session support via url or cookies *
\*************************************************************************/
-
function link($url = '', $extravars = '')
{
global $phpgw, $phpgw_info, $usercookie, $kp3, $PHP_SELF;
/* Fix problems when PHP_SELF if used as the param */
- if ($url == $PHP_SELF){ $url = ''; }
+ if ($url == $PHP_SELF)
+ {
+ $url = '';
+ }
- if (! $kp3) { $kp3 = $phpgw_info['user']['kp3']; }
+ if (! $kp3)
+ {
+ $kp3 = $phpgw_info['user']['kp3'];
+ }
// Explicit hack to work around problems with php running as CGI on windows
// please let us know if this doesn't work for you!
- if (! $url && (PHP_OS == 'Windows' || PHP_OS == 'OS/2' || PHP_OS == 'WIN32' || PHP_OS == 'WIN16')) {
+ if (! $url && (PHP_OS == 'Windows' || PHP_OS == 'OS/2' || PHP_OS == 'WIN32' || PHP_OS == 'WIN16'))
+ {
$exe = strpos($PHP_SELF,'php.exe');
if ($exe != false) {
$exe += 7; // strlen('php.exe')
@@ -447,7 +485,8 @@
$url .= substr($PHP_SELF,$exe,strlen($PHP_SELF)-$exe);
}
}
- if (! $url) {
+ if (! $url)
+ {
$url_root = split ('/', $phpgw_info['server']['webserver_url']);
/* Some hosting providers have their paths screwy.
If the value from $PHP_SELF is not what you expect, you can use this to patch it
@@ -457,36 +496,53 @@
$patched_php_self = $PHP_SELF;
$url = (strlen($url_root[0])? $url_root[0].'//':'') . $url_root[2] . $patched_php_self;
}
-
- if (isset($phpgw_info['server']['usecookies']) &&
- $phpgw_info['server']['usecookies']) {
- if ($extravars) { $url .= "?$extravars"; }
- } else {
- $url .= "?sessionid=" . $phpgw_info['user']['sessionid'];
- $url .= "&kp3=" . $kp3;
- $url .= "&domain=" . $phpgw_info['user']['domain'];
+
+ if (isset($phpgw_info['server']['usecookies']) && $phpgw_info['server']['usecookies'])
+ {
+ if ($extravars)
+ {
+ $url .= '?' . $extravars;
+ }
+ }
+ else
+ {
+ $url .= '?sessionid=' . $phpgw_info['user']['sessionid'];
+ $url .= '&kp3=' . $kp3;
+ $url .= '&domain=' . $phpgw_info['user']['domain'];
// This doesn't belong in the API.
// Its up to the app to pass this value. (jengo)
// Putting it into the app requires a massive number of updates in email app.
// Until that happens this needs to stay here (seek3r)
- if ($phpgw_info['flags']['newsmode']) { $url .= "&newsmode=on"; }
- if ($extravars) { $url .= "&$extravars"; }
+ if ($phpgw_info['flags']['newsmode'])
+ {
+ $url .= '&newsmode=on';
+ }
+ if ($extravars)
+ {
+ $url .= "&$extravars";
+ }
}
-
+
$url = str_replace('/?', '/index.php?', $url);
$webserver_url_count = strlen($phpgw_info['server']['webserver_url']);
$slash_check = strtolower(substr($url ,0,1));
- if(substr($url ,0,$webserver_url_count) != $phpgw_info['server']['webserver_url']) {
+ if (substr($url ,0,$webserver_url_count) != $phpgw_info['server']['webserver_url'])
+ {
$app = $phpgw_info['flags']['currentapp'];
- if($slash_check == '/') {
- $url = $phpgw_info['server']['webserver_url'].$url;
- } elseif ($app == 'home' || $app == 'logout' || $app == 'login'){
+ if ($slash_check == '/')
+ {
+ $url = $phpgw_info['server']['webserver_url'] . $url;
+ }
+ elseif ($app == 'home' || $app == 'logout' || $app == 'login')
+ {
$url = $phpgw_info['server']['webserver_url'].'/'.$url;
- }else{
+ }
+ else
+ {
$url = $phpgw_info['server']['webserver_url'].'/'.$app.'/'.$url;
}
}
return $url;
}
- }
+ }
?>