From cb3538d2abe1a333bae0d91d6ff221a1ec8cacc2 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Thu, 31 Jul 2008 16:27:46 -0400 Subject: [PATCH] Make special folders configurable for the user --- program/steps/settings/save_prefs.inc | 76 +++++++++++++++++++++----------------- 1 files changed, 42 insertions(+), 34 deletions(-) diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 16d7f23..ccd6e5f 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -5,7 +5,7 @@ | program/steps/settings/save_prefs.inc | | | | This file is part of the RoundCube Webmail client | - | Copyright (C) 2005, RoundCube Dev. - Switzerland | + | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -19,46 +19,54 @@ */ -$a_user_prefs = $_SESSION['user_prefs']; -if (!is_array($a_user_prefs)) - $a_user_prefs = array(); +$a_user_prefs = array( + 'timezone' => isset($_POST['_timezone']) ? floatval($_POST['_timezone']) : $CONFIG['timezone'], + 'dst_active' => isset($_POST['_dst_active']) ? TRUE : FALSE, + 'pagesize' => is_numeric($_POST['_pagesize']) ? max(2, intval($_POST['_pagesize'])) : $CONFIG['pagesize'], + 'prettydate' => isset($_POST['_pretty_date']) ? TRUE : FALSE, + 'prefer_html' => isset($_POST['_prefer_html']) ? TRUE : FALSE, + 'addrbook_show_images' => isset($_POST['_addrbook_show_images']) ? TRUE : FALSE, + 'htmleditor' => isset($_POST['_htmleditor']) ? TRUE : FALSE, + 'inline_images' => isset($_POST['_inline_images']) ? TRUE : FALSE, + 'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE, + 'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE, + 'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE, + 'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE, + 'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE, + 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0, + 'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0, + 'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'], + 'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST), + 'sent_mbox' => get_input_value('_sent_mbox', RCUBE_INPUT_POST), + 'junk_mbox' => get_input_value('_junk_mbox', RCUBE_INPUT_POST), + 'trash_mbox' => get_input_value('_trash_mbox', RCUBE_INPUT_POST), + ); + +// don't override these parameters +foreach ((array)$CONFIG['dont_override'] as $p) + $a_user_prefs[$p] = $CONFIG[$p]; -$a_user_prefs['timezone'] = isset($_POST['_timezone']) ? (int)$_POST['_timezone'] : $CONFIG['timezone']; -$a_user_prefs['pagesize'] = is_numeric($_POST['_pagesize']) ? (int)$_POST['_pagesize'] : $CONFIG['pagesize']; -$a_user_prefs['prefer_html'] = isset($_POST['_prefer_html']) ? TRUE : FALSE; +// switch UI language +if (isset($_POST['_language'])) { + $RCMAIL->load_language(get_input_value('_language', RCUBE_INPUT_POST)); +} -// MM: Date format toggle (Pretty / Standard) -$a_user_prefs['prettydate'] = isset($_POST['_pretty_date']) ? TRUE : FALSE; +// switch skin +$OUTPUT->set_skin($a_user_prefs['skin']); -if (isset($_POST['_language'])) - { - $sess_user_lang = $_SESSION['user_lang'] = $_POST['_language']; - rcmail_set_locale($sess_user_lang); - } +// force min size +if ($a_user_prefs['pagesize'] < 1) + $a_user_prefs['pagesize'] = 10; +if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize'])) + $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize']; -$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()) - { - show_message('successfullysaved', 'confirmation'); - - $_SESSION['user_prefs'] = $a_user_prefs; - $CONFIG = array_merge($CONFIG, $a_user_prefs); - } +if ($USER->save_prefs($a_user_prefs)) + $OUTPUT->show_message('successfullysaved', 'confirmation'); // go to next step -$_action = 'preferences'; +rcmail_overwrite_action('preferences'); -// overwrite action variable -$OUTPUT->add_script(sprintf("\n%s.set_env('action', '%s');", $JS_OBJECT_NAME, $_action)); - -?> \ No newline at end of file +?> -- Gitblit v1.9.1