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