From 3fec6952ddbff1b5b487ea2927928338f39e4fef Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Tue, 15 Nov 2011 05:50:30 -0500 Subject: [PATCH] - Applied fixes from trunk up to r5425 --- program/include/rcmail.php | 58 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 29 insertions(+), 29 deletions(-) diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 3cc2774..e06594f 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -483,7 +483,8 @@ 'name' => rcube_label('personaladrbook'), 'groups' => $this->address_books['0']->groups, 'readonly' => $this->address_books['0']->readonly, - 'autocomplete' => in_array('sql', $autocomplete) + 'autocomplete' => in_array('sql', $autocomplete), + 'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'), ); } @@ -593,7 +594,6 @@ return; $this->imap = new rcube_imap(); - $this->imap->debug_level = $this->config->get('debug_level'); $this->imap->skip_deleted = $this->config->get('skip_deleted'); // enable caching of imap data @@ -615,7 +615,7 @@ // Setting root and delimiter before establishing the connection // can save time detecting them using NAMESPACE and LIST $options = array( - 'auth_method' => $this->config->get('imap_auth_type', 'check'), + 'auth_type' => $this->config->get('imap_auth_type', 'check'), 'auth_cid' => $this->config->get('imap_auth_cid'), 'auth_pw' => $this->config->get('imap_auth_pw'), 'debug' => (bool) $this->config->get('imap_debug', 0), @@ -678,18 +678,21 @@ if (session_id()) return; + $sess_name = $this->config->get('session_name'); + $sess_domain = $this->config->get('session_domain'); + $lifetime = $this->config->get('session_lifetime', 0) * 60; + // set session domain - if ($domain = $this->config->get('session_domain')) { - ini_set('session.cookie_domain', $domain); + if ($sess_domain) { + ini_set('session.cookie_domain', $sess_domain); } // set session garbage collecting time according to session_lifetime - $lifetime = $this->config->get('session_lifetime', 0) * 60; if ($lifetime) { ini_set('session.gc_maxlifetime', $lifetime * 2); } ini_set('session.cookie_secure', rcube_https_check()); - ini_set('session.name', 'roundcube_sessid'); + ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid'); ini_set('session.use_cookies', 1); ini_set('session.use_only_cookies', 1); ini_set('session.serialize_handler', 'php'); @@ -729,7 +732,7 @@ $keep_alive = max(60, $keep_alive); $this->session->set_keep_alive($keep_alive); } - + $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']); $this->session->set_ip_check($this->config->get('ip_check')); } @@ -839,16 +842,8 @@ if (!$imap_login) return false; - $this->set_imap_prop(); - // user already registered -> update user's record if (is_object($user)) { - // fix some old settings according to namespace prefix - $this->fix_namespace_settings($user); - - // create default folders on first login - if (!$user->data['last_login'] && $config['create_default_folders']) - $this->imap->create_default_folders(); // update last login timestamp $user->touch(); } @@ -856,13 +851,6 @@ else if ($config['auto_create_user']) { if ($created = rcube_user::create($username, $host)) { $user = $created; - - // fix default settings according to namespace prefix - $this->fix_namespace_settings($user); - - // create default folders on first login - if ($config['create_default_folders']) - $this->imap->create_default_folders(); } else { raise_error(array( @@ -882,8 +870,18 @@ // login succeeded if (is_object($user) && $user->ID) { + // Configure environment $this->set_user($user); + $this->set_imap_prop(); $this->session_configure(); + + // fix some old settings according to namespace prefix + $this->fix_namespace_settings($user); + + // create default folders on first login + if ($config['create_default_folders'] && (!empty($created) || empty($user->data['last_login']))) { + $this->imap->create_default_folders(); + } // set session vars $_SESSION['user_id'] = $user->ID; @@ -893,9 +891,11 @@ $_SESSION['imap_ssl'] = $imap_ssl; $_SESSION['password'] = $this->encrypt($pass); $_SESSION['login_time'] = mktime(); - + if (isset($_REQUEST['_timezone']) && $_REQUEST['_timezone'] != '_default_') $_SESSION['timezone'] = floatval($_REQUEST['_timezone']); + if (isset($_REQUEST['_dstactive']) && $_REQUEST['_dstactive'] != '_default_') + $_SESSION['dst_active'] = intval($_REQUEST['_dstactive']); // force reloading complete list of subscribed mailboxes $this->imap->clear_cache('mailboxes', true); @@ -1270,7 +1270,7 @@ { $sess_id = $_COOKIE[ini_get('session.name')]; if (!$sess_id) $sess_id = session_id(); - $plugin = $this->plugins->exec_hook('request_token', array('value' => md5('RT' . $this->task . $this->config->get('des_key') . $sess_id))); + $plugin = $this->plugins->exec_hook('request_token', array('value' => md5('RT' . $this->user->ID . $this->config->get('des_key') . $sess_id))); return $plugin['value']; } @@ -1564,7 +1564,7 @@ // use strtr behaviour of going through source string once $cmd = strtr($cmd, $replacements); - + return (string)shell_exec($cmd); } @@ -1600,7 +1600,7 @@ } } } - + /** * Returns current action filename * @@ -1630,8 +1630,8 @@ if (!$prefix_len) return; - $prefs = $user->get_prefs(); - if (empty($prefs) || $prefs['namespace_fixed']) + $prefs = $this->config->all(); + if (!empty($prefs['namespace_fixed'])) return; // Build namespace prefix regexp -- Gitblit v1.9.1