X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=include%2Fload_prefs.php;h=c4fdb7ae71e6f1d3f7a525191bac1e4ef3d202f2;hp=5e11b45f272a9b9e98bd60ef60618e2b2955c2f4;hb=c69bc63529c64510bdccbfb74bfcecc1d9d0d07b;hpb=6373ad1237c82a561fec8264457e3a3a845f7e87 diff --git a/include/load_prefs.php b/include/load_prefs.php index 5e11b45f..c4fdb7ae 100644 --- a/include/load_prefs.php +++ b/include/load_prefs.php @@ -6,114 +6,66 @@ * Loads preferences from the $username.pref file used by almost * every other script in the source directory and alswhere. * - * @copyright © 1999-2006 The SquirrelMail Project Team + * @copyright © 1999-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail */ -/** SquirrelMail required files. */ -include_once(SM_PATH . 'functions/constants.php'); -include_once(SM_PATH . 'include/validate.php'); -include_once(SM_PATH . 'functions/plugin.php'); - +/** + * do not allow to call this file directly + * FIXME: PHP CGI (at least on IIS 5.1) does not set 'SCRIPT_FILENAME' and + * code does not handle magic_quotes_gpc=on. + */ +if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) { + header("Location: ../src/login.php"); + die(); +} if( ! sqgetGlobalVar('username', $username, SQ_SESSION) ) { $username = ''; } - +// TODO Get rid of "none" strings when NULL or false should be used, i hate them i hate them i hate them!!!. $custom_css = getPref($data_dir, $username, 'custom_css', 'none' ); -$theme = ( !isset($theme) ? array() : $theme ); -$color = ( !isset($color) ? array() : $color ); -$aTemplateSet = ( !isset($aTemplateSet) ? array() : $aTemplateSet ); -$templateset_default = ( !isset($templateset_default) ? 0 : $templateset_default ); -$chosen_theme = getPref($data_dir, $username, 'chosen_theme'); -$sTplDir = getPref($data_dir, $username, 'sTplDir', SM_PATH . 'templates/default/'); -$found_templateset = false; - -/* need to adjust $chosen_template path with SM_PATH */ -$sTplDir = preg_replace("/(\.\.\/){1,}/", SM_PATH, $sTplDir); - -for ($i = 0; $i < count($aTemplateSet); ++$i){ - if ($aTemplateSet[$i]['PATH'] == $sTplDir) { - $found_templateset = true; - break; - } -} -$sTplDir = ($found_templateset ? $sTplDir : ''); -if (!$found_templateset) { - if (isset($aTemplateSet) && isset($aTemplateSet[$templateset_default]) && file_exists($aTemplateSet[$templateset_default]['PATH'])) { - $sTplDir = $aTemplateSet[$templateset_default]['PATH']; - } else { - $sTplDir = SM_PATH.'templates/default/'; - } -} else if (!file_exists($sTplDir)) { - $sTplDir = SM_PATH.'templates/default/'; +// template set setup +// +$sDefaultTemplateID = Template::get_default_template_set(); +if (PAGE_NAME == 'squirrelmail_rpc') { + $sTemplateID = Template::get_rpc_template_set(); +} else { + $sTemplateID = getPref($data_dir, $username, 'sTemplateID', $sDefaultTemplateID); } -$found_theme = false; - -/* need to adjust $chosen_theme path with SM_PATH */ -$chosen_theme = preg_replace("/(\.\.\/){1,}/", SM_PATH, $chosen_theme); - -for ($i = 0; $i < count($theme); ++$i){ - if ($theme[$i]['PATH'] == $chosen_theme) { - $found_theme = true; - break; - } -} -$chosen_theme = (!$found_theme ? '' : $chosen_theme); +// load user theme +// +$chosen_theme = getPref($data_dir, $username, 'chosen_theme'); +$chosen_theme_path = empty($chosen_theme) ? + $chosen_theme_path = $user_themes[$user_theme_default]['PATH'] : + $chosen_theme; -/** -* This theme as a failsafe if no themes were found. It makes -* no sense to cause the whole thing to exit just because themes -* were not found. This is the absolute last resort. -* Moved here to provide 'sane' defaults for incomplete themes. -*/ -$color[0] = '#DCDCDC'; /* light gray TitleBar */ -$color[1] = '#800000'; /* red */ -$color[2] = '#CC0000'; /* light red Warning/Error Messages */ -$color[3] = '#A0B8C8'; /* green-blue Left Bar Background */ -$color[4] = '#FFFFFF'; /* white Normal Background */ -$color[5] = '#FFFFCC'; /* light yellow Table Headers */ -$color[6] = '#000000'; /* black Text on left bar */ -$color[7] = '#0000CC'; /* blue Links */ -$color[8] = '#000000'; /* black Normal text */ -$color[9] = '#ABABAB'; /* mid-gray Darker version of #0 */ -$color[10] = '#666666'; /* dark gray Darker version of #9 */ -$color[11] = '#770000'; /* dark red Special Folders color */ -$color[12] = '#EDEDED'; -$color[15] = '#002266'; /* (dark blue) Unselectable folders */ - -if (isset($chosen_theme) && $found_theme && (file_exists($chosen_theme))) { - @include_once($chosen_theme); -} else { - if (isset($theme) && isset($theme[$theme_default]) && file_exists($theme[$theme_default]['PATH'])) { - @include_once($theme[$theme_default]['PATH']); - $chosen_theme = $theme[$theme_default]['PATH']; - } -} +// user's icon theme, if using icons +$icon_theme = getPref($data_dir, $username, 'icon_theme'); +$default_icon_theme = $icon_themes[$icon_theme_def]['PATH']; +$fallback_icon_theme = $icon_themes[$icon_theme_fallback]['PATH']; +$found_theme = false; -if (!defined('download_php')) { - sqsession_register($theme_css, 'theme_css'); +// Make sure the chosen icon theme is a legitimate one. +// need to adjust $icon_theme path with SM_PATH +$icon_theme = preg_replace("/(\.\.\/){1,}/", SM_PATH, $icon_theme); +$k = 0; +while (!$found_theme && $k < count($icon_themes)) { + if ($icon_themes[$k]['PATH'] == $icon_theme) + $found_theme = true; + $k++; } - -// user's icon theme, if using icons -$icon_theme = getPref($data_dir, $username, 'icon_theme', 'images/themes/xp/' ); -if ($icon_theme == 'template') { - $icon_theme = $sTplDir . 'images/'; +if (!$found_theme) { + $icon_theme = $default_icon_theme; } -/* - * NOTE: The $icon_theme_path var should contain the path to the icon - * theme to use. If the admin has disabled icons, or the user has - * set the icon theme to "None," no icons will be used. - */ -$icon_theme_path = (!$use_icons || $icon_theme=='none') ? NULL : $icon_theme; // show (or not) flag and unflag buttons on mailbox list screen $show_flag_buttons = getPref($data_dir, $username, 'show_flag_buttons', SMPREF_ON ); @@ -209,9 +161,6 @@ $reply_focus = getPref($data_dir, $username, 'reply_focus', ''); $left_refresh = getPref($data_dir, $username, 'left_refresh', 600 ); $left_refresh = strtolower($left_refresh); -/* Load up the Signature file */ -$signature_abs = $signature = getSig($data_dir, $username, 'g'); - /* Message Highlighting Rules */ $message_highlight_list = array(); @@ -228,6 +177,7 @@ if( $ser = getPref($data_dir, $username, 'hililist') ) { $message_highlight_list[$i]['match_type'] = $highlight_array[3]; removePref($data_dir, $username, "highlight$i"); } +// NB: The fact that this preference is always set here means that some plugins rely on testing it to know if a user has logged in before - the "old way" above is probably long since obsolete and unneeded, but the setPref() below should not be removed /* store in new format for the next time */ setPref($data_dir, $username, 'hililist', serialize($message_highlight_list)); } @@ -272,8 +222,6 @@ if (!$index_order) { setPref($data_dir, $username, 'index_order', serialize($index_order)); } - - if (!isset($default_mailbox_pref)) { $show_num = (isset($show_num)) ? $show_num : 15; @@ -313,6 +261,9 @@ $collapse_folders = $show_html_default = getPref($data_dir, $username, 'show_html_default', SMPREF_ON); +$addrsrch_fullname = + getPref($data_dir, $username, 'addrsrch_fullname', 'fullname'); + $enable_forward_as_attachment = getPref($data_dir, $username, 'enable_forward_as_attachment', SMPREF_ON); @@ -332,6 +283,12 @@ $page_selector = getPref($data_dir, $username, 'page_selector', SMPREF_ON); $compact_paginator = getPref($data_dir, $username, 'compact_paginator', SMPREF_OFF); $page_selector_max = getPref($data_dir, $username, 'page_selector_max', 10); +/* Abook page selector options */ +$abook_show_num = getPref($data_dir, $username, 'abook_show_num', 15 ); +$abook_page_selector = getPref($data_dir, $username, 'abook_page_selector', SMPREF_ON); +$abook_compact_paginator = getPref($data_dir, $username, 'abook_compact_paginator', SMPREF_OFF); +$abook_page_selector_max = getPref($data_dir, $username, 'abook_page_selector_max', 5); + /* SqClock now in the core */ $date_format = getPref($data_dir, $username, 'date_format', 3); $hour_format = getPref($data_dir, $username, 'hour_format', SMPREF_TIME_12HR); @@ -371,16 +328,18 @@ $show_only_subscribed_folders = getPref($data_dir, $username, 'show_only_subscribed_folders', SMPREF_ON); -$forward_cc = getPref($data_dir, $username, 'forward_cc', SMPREF_OFF); - /* How are mailbox select lists displayed: 0. full names, 1. indented (default), * 3. delimited) */ -$mailbox_select_style = getPref($data_dir, $username, 'mailbox_select_style', SMPREF_ON); +$mailbox_select_style = getPref($data_dir, $username, 'mailbox_select_style', SMPREF_MAILBOX_SELECT_INDENTED); /* Allow user to customize, and display the full date, instead of day, or time based on time distance from date of message */ +$custom_date_format = getPref($data_dir, $username, 'custom_date_format', ''); $show_full_date = getPref($data_dir, $username, 'show_full_date', SMPREF_OFF); +// Allow user to determine if personal name or email address is shown in mailbox listings +$show_personal_names = getPref($data_dir, $username, 'show_personal_names', SMPREF_ON); + /* Allow user to customize length of from field */ $truncate_sender = getPref($data_dir, $username, 'truncate_sender', 50); /* Allow user to customize length of subject field */ @@ -390,6 +349,81 @@ $show_recipient_instead = getPref($data_dir, $username, 'show_recipient_instead' $delete_prev_next_display = getPref($data_dir, $username, 'delete_prev_next_display', SMPREF_ON); +/** + * Access keys + * @since 1.5.2 + */ +$accesskey_menubar_compose = getPref($data_dir, $username, 'accesskey_menubar_compose', 'c'); +$accesskey_menubar_addresses = getPref($data_dir, $username, 'accesskey_menubar_addresses', 'NONE'); +$accesskey_menubar_folders = getPref($data_dir, $username, 'accesskey_menubar_folders', 'NONE'); +$accesskey_menubar_options = getPref($data_dir, $username, 'accesskey_menubar_options', 'o'); +$accesskey_menubar_search = getPref($data_dir, $username, 'accesskey_menubar_search', 'NONE'); +$accesskey_menubar_help = getPref($data_dir, $username, 'accesskey_menubar_help', 'NONE'); +$accesskey_menubar_signout = getPref($data_dir, $username, 'accesskey_menubar_signout', 'z'); + + +$accesskey_read_msg_reply = getPref($data_dir, $username, 'accesskey_read_msg_reply', 'r'); +$accesskey_read_msg_reply_all = getPref($data_dir, $username, 'accesskey_read_msg_reply_all', 'a'); +$accesskey_read_msg_forward = getPref($data_dir, $username, 'accesskey_read_msg_forward', 'f'); +$accesskey_read_msg_as_attach = getPref($data_dir, $username, 'accesskey_read_msg_as_attach', 'h'); +$accesskey_read_msg_delete = getPref($data_dir, $username, 'accesskey_read_msg_delete', 'd'); +$accesskey_read_msg_bypass_trash = getPref($data_dir, $username, 'accesskey_read_msg_bypass_trash', 'b'); +$accesskey_read_msg_move_to = getPref($data_dir, $username, 'accesskey_read_msg_move_to', 't'); +$accesskey_read_msg_move = getPref($data_dir, $username, 'accesskey_read_msg_move', 'm'); +$accesskey_read_msg_copy = getPref($data_dir, $username, 'accesskey_read_msg_copy', 'y'); + + +$accesskey_compose_identity = getPref($data_dir, $username, 'accesskey_compose_identity', 'f'); +$accesskey_compose_to = getPref($data_dir, $username, 'accesskey_compose_to', 't'); +$accesskey_compose_cc = getPref($data_dir, $username, 'accesskey_compose_cc', 'x'); +$accesskey_compose_bcc = getPref($data_dir, $username, 'accesskey_compose_bcc', 'y'); +$accesskey_compose_subject = getPref($data_dir, $username, 'accesskey_compose_subject', 'j'); +$accesskey_compose_priority = getPref($data_dir, $username, 'accesskey_compose_priority', 'p'); +$accesskey_compose_on_read = getPref($data_dir, $username, 'accesskey_compose_on_read', 'r'); +$accesskey_compose_on_delivery = getPref($data_dir, $username, 'accesskey_compose_on_delivery', 'v'); +$accesskey_compose_signature = getPref($data_dir, $username, 'accesskey_compose_signature', 'g'); +$accesskey_compose_addresses = getPref($data_dir, $username, 'accesskey_compose_addresses', 'a'); +$accesskey_compose_save_draft = getPref($data_dir, $username, 'accesskey_compose_save_draft', 'd'); +$accesskey_compose_send = getPref($data_dir, $username, 'accesskey_compose_send', 's'); +$accesskey_compose_body = getPref($data_dir, $username, 'accesskey_compose_body', 'b'); +$accesskey_compose_attach_browse = getPref($data_dir, $username, 'accesskey_compose_attach_browse', 'w'); +$accesskey_compose_attach = getPref($data_dir, $username, 'accesskey_compose_attach', 'h'); +$accesskey_compose_delete_attach = getPref($data_dir, $username, 'accesskey_compose_delete_attach', 'l'); + + +$accesskey_folders_refresh = getPref($data_dir, $username, 'accesskey_folders_refresh', 'NONE'); +$accesskey_folders_purge_trash = getPref($data_dir, $username, 'accesskey_folders_purge_trash', 'NONE'); +$accesskey_folders_inbox = getPref($data_dir, $username, 'accesskey_folders_inbox', 'i'); + + +$accesskey_options_personal = getPref($data_dir, $username, 'accesskey_options_personal', 'p'); +$accesskey_options_display = getPref($data_dir, $username, 'accesskey_options_display', 'd'); +$accesskey_options_highlighting = getPref($data_dir, $username, 'accesskey_options_highlighting', 'h'); +$accesskey_options_folders = getPref($data_dir, $username, 'accesskey_options_folders', 'f'); +$accesskey_options_index_order = getPref($data_dir, $username, 'accesskey_options_index_order', 'x'); +$accesskey_options_compose = getPref($data_dir, $username, 'accesskey_options_compose', 'e'); +$accesskey_options_accessibility = getPref($data_dir, $username, 'accesskey_options_accessibility', 'a'); + + +$accesskey_mailbox_previous = getPref($data_dir, $username, 'accesskey_mailbox_previous', 'p'); +$accesskey_mailbox_next = getPref($data_dir, $username, 'accesskey_mailbox_next', 'n'); +$accesskey_mailbox_all_paginate = getPref($data_dir, $username, 'accesskey_mailbox_all_paginate', 'a'); +$accesskey_mailbox_thread = getPref($data_dir, $username, 'accesskey_mailbox_thread', 'h'); +$accesskey_mailbox_flag = getPref($data_dir, $username, 'accesskey_mailbox_flag', 'l'); +$accesskey_mailbox_unflag = getPref($data_dir, $username, 'accesskey_mailbox_unflag', 'g'); +$accesskey_mailbox_read = getPref($data_dir, $username, 'accesskey_mailbox_read', 'r'); +$accesskey_mailbox_unread = getPref($data_dir, $username, 'accesskey_mailbox_unread', 'u'); +$accesskey_mailbox_forward = getPref($data_dir, $username, 'accesskey_mailbox_forward', 'f'); +$accesskey_mailbox_delete = getPref($data_dir, $username, 'accesskey_mailbox_delete', 'd'); +$accesskey_mailbox_expunge = getPref($data_dir, $username, 'accesskey_mailbox_expunge', 'x'); +$accesskey_mailbox_undelete = getPref($data_dir, $username, 'accesskey_mailbox_undelete', 'e'); +$accesskey_mailbox_bypass_trash = getPref($data_dir, $username, 'accesskey_mailbox_bypass_trash', 'b'); +$accesskey_mailbox_move_to = getPref($data_dir, $username, 'accesskey_mailbox_move_to', 't'); +$accesskey_mailbox_move = getPref($data_dir, $username, 'accesskey_mailbox_move', 'm'); +$accesskey_mailbox_copy = getPref($data_dir, $username, 'accesskey_mailbox_copy', 'y'); +$accesskey_mailbox_toggle_selected = getPref($data_dir, $username, 'accesskey_mailbox_toggle_selected', 's'); + + /** * Height of iframe that displays html formated emails * @since 1.5.1 @@ -401,6 +435,102 @@ $chosen_fontset = getPref($data_dir, $username, 'chosen_fontset', $default_fonts if (! isset($default_fontsize)) $default_fontsize=SMPREF_NONE; $chosen_fontsize = getPref($data_dir, $username, 'chosen_fontsize', $default_fontsize); -do_hook('loading_prefs'); +/** + * Controls translation of special folders + * @since 1.5.2 + */ +$translate_special_folders = getPref($data_dir, $username, 'translate_special_folders', SMPREF_OFF); +/** + * Controls display of message copy options + * @since 1.5.2 + */ +$show_copy_buttons = getPref($data_dir, $username, 'show_copy_buttons', SMPREF_OFF); + +/** Put in a safety net for authentication here, in case a naughty admin didn't run conf.pl when they upgraded */ + +// TODO Get rid of "none" strings when NULL should be used, i hate them i hate them i hate them!!!. +if (! isset($smtp_auth_mech)) { + $smtp_auth_mech = 'none'; +} + +if (! isset($imap_auth_mech)) { + $imap_auth_mech = 'login'; +} + +if (! isset($use_imap_tls)) { + $use_imap_tls = false; +} + +if (! isset($use_smtp_tls)) { + $use_smtp_tls = false; +} + + +// allow plugins to override user prefs +// +do_hook('loading_prefs', $null); + + +// check user prefs template selection against templates actually available +// +$found_templateset = false; +if (PAGE_NAME == 'squirrelmail_rpc') { + // RPC skins have no in-memory list + if (is_dir(SM_PATH . Template::calculate_template_file_directory($sTemplateID))) { + $found_templateset = true; + } +} else { + for ($i = 0; $i < count($aTemplateSet); ++$i){ + if ($aTemplateSet[$i]['ID'] == $sTemplateID) { + $found_templateset = true; + break; + } + } +} + +// FIXME: do we need/want to check here for actual presence of template sets? +// selected template not available, fall back to default template +// +if (!$found_templateset) $sTemplateID = $sDefaultTemplateID; + +// need to build this object now because it is used below to validate +// user css theme choice +// +$oTemplate = Template::construct_template($sTemplateID); + + +// Make sure the chosen theme is a legitimate one. +// +// need to adjust $chosen_theme path with SM_PATH +$chosen_theme_path = preg_replace("/(\.\.\/){1,}/", SM_PATH, $chosen_theme_path); +$found_theme = false; +while (!$found_theme && (list($index, $data) = each($user_themes))) { + if ($data['PATH'] == $chosen_theme_path) + $found_theme = true; +} + +if (!$found_theme) { + $template_themes = $oTemplate->get_alternative_stylesheets(true); + while (!$found_theme && (list($path, $name) = each($template_themes))) { + if ($path == $chosen_theme_path) + $found_theme = true; + } +} + +if (!$found_theme || $chosen_theme == 'none') { + $chosen_theme_path = NULL; +} + + +/* + * NOTE: The $icon_theme_path var should contain the path to the icon + * theme to use. If the admin has disabled icons, or the user has + * set the icon theme to "None," no icons will be used. + */ +$icon_theme_path = (!$use_icons || $icon_theme=='none') ? NULL : ($icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $icon_theme); +$default_icon_theme_path = (!$use_icons || $default_icon_theme=='none') ? NULL : ($default_icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $default_icon_theme); +$fallback_icon_theme_path = (!$use_icons || $fallback_icon_theme=='none') ? NULL : ($fallback_icon_theme == 'template' ? SM_PATH . Template::calculate_template_images_directory($sTemplateID) : $fallback_icon_theme); + +/* Load up the Signature file */ +$signature_abs = $signature = getSig($data_dir, $username, 'g'); -?>