From 1854c4525bf1fce227a8cc0fa8aad06615df0eae Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 07 May 2008 05:38:44 -0400 Subject: [PATCH] More code cleanup + oop-ization --- program/steps/settings/save_prefs.inc | 63 +++++++++++++++---------------- 1 files changed, 30 insertions(+), 33 deletions(-) diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 7cc3270..53408f5 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,44 +19,41 @@ */ -$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, + 'htmleditor' => isset($_POST['_htmleditor']) ? TRUE : FALSE, + 'preview_pane' => isset($_POST['_preview_pane']) ? 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, + ); + +// 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; +// force min size +if ($a_user_prefs['pagesize'] < 1) + $a_user_prefs['pagesize'] = 10; -if (isset($_POST['_language'])) - $sess_user_lang = $_SESSION['user_lang'] = $_POST['_language']; +if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize'])) + $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize']; - -$DB->query(sprintf("UPDATE %s - SET preferences='%s', - language='%s' - WHERE user_id=%d", - get_table_name('users'), - addslashes(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