summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/main.inc.php.dist12
-rw-r--r--program/include/main.inc40
-rw-r--r--program/steps/settings/save_prefs.inc16
3 files changed, 43 insertions, 25 deletions
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index af27851b2..8a60bc6cd 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -128,12 +128,6 @@ $rcmail_config['trash_mbox'] = 'Trash';
// display these folders separately in the mailbox list
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
-// default sort col
-$rcmail_config['message_sort_col'] = 'date';
-
-// default sort order
-$rcmail_config['message_sort_order'] = 'DESC';
-
// Set TRUE if deleted messages should not be displayed
// This will make the application run slower
$rcmail_config['skip_deleted'] = FALSE;
@@ -180,6 +174,12 @@ $rcmail_config['prefer_html'] = TRUE;
// show pretty dates as standard
$rcmail_config['prettydate'] = TRUE;
+// default sort col
+$rcmail_config['message_sort_col'] = 'date';
+
+// default sort order
+$rcmail_config['message_sort_order'] = 'DESC';
+
/***** try to load host-specific configuration *****/
diff --git a/program/include/main.inc b/program/include/main.inc
index a3a391359..c0dd71ecb 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -219,10 +219,19 @@ function rcmail_shutdown()
// destroy session data and remove cookie
function rcmail_kill_session()
{
-/* $sess_name = session_name();
- if (isset($_COOKIE[$sess_name]))
- setcookie($sess_name, '', time()-42000, '/');
-*/
+ // save user preferences
+ $a_user_prefs = $_SESSION['user_prefs'];
+ if (!is_array($a_user_prefs))
+ $a_user_prefs = array();
+
+ if ((isset($_SESSION['sort_col']) && $_SESSION['sort_col']!=$a_user_prefs['message_sort_col']) ||
+ (isset($_SESSION['sort_order']) && $_SESSION['sort_order']!=$a_user_prefs['message_sort_order']))
+ {
+ $a_user_prefs['message_sort_col'] = $_SESSION['sort_col'];
+ $a_user_prefs['message_sort_order'] = $_SESSION['sort_order'];
+ rcmail_save_user_prefs($a_user_prefs);
+ }
+
$_SESSION = array();
session_destroy();
}
@@ -617,6 +626,29 @@ function rcmail_user2email($user)
}
+function rcmail_save_user_prefs($a_user_prefs)
+ {
+ global $DB, $CONFIG, $sess_user_lang;
+
+ $DB->query("UPDATE ".get_table_name('users')."
+ SET preferences=?,
+ language=?
+ WHERE user_id=?",
+ serialize($a_user_prefs),
+ $sess_user_lang,
+ $_SESSION['user_id']);
+
+ if ($DB->affected_rows())
+ {
+ $_SESSION['user_prefs'] = $a_user_prefs;
+ $CONFIG = array_merge($CONFIG, $a_user_prefs);
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+
// overwrite action variable
function rcmail_overwrite_action($action)
{
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 81ffbe80a..98912daae 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -38,22 +38,8 @@ if (isset($_POST['_language']))
rcmail_set_locale($sess_user_lang);
}
-
-$DB->query("UPDATE ".get_table_name('users')."
- SET preferences=?,
- language=?
- WHERE user_id=?",
- serialize($a_user_prefs),
- $sess_user_lang,
- $_SESSION['user_id']);
-
-if ($DB->affected_rows())
- {
+if (rcmail_save_user_prefs($a_user_prefs))
show_message('successfullysaved', 'confirmation');
-
- $_SESSION['user_prefs'] = $a_user_prefs;
- $CONFIG = array_merge($CONFIG, $a_user_prefs);
- }
// go to next step