Add radio button group widget type SMOPT_TYPE_STRLIST_RADIO
[squirrelmail.git] / include / load_prefs.php
index 169908b74ebd62cbc5e74dd9f5a7c128cc904d6c..5cc697495f3430a7a898d08ce05fc8eba2ac7690 100644 (file)
@@ -6,7 +6,7 @@
  * 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
@@ -17,8 +17,7 @@
  * 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__) ||
-     (isset($HTTP_SERVER_SERVER['SCRIPT_FILENAME']) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) {
     header("Location: ../src/login.php");
     die();
 }
@@ -29,66 +28,40 @@ if( ! sqgetGlobalVar('username', $username, SQ_SESSION) ) {
 // 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' );
 
-$aTemplateSet = (!isset($aTemplateSet) || !is_array($aTemplateSet) 
-                 ? array() : $aTemplateSet);
-$templateset_default = ( !isset($templateset_default) ? 0 : $templateset_default );
 
-$sTemplateID = getPref($data_dir, $username, 'sTemplateID', 'default');
-
-// check user prefs template selection against templates actually available
+// template set setup
 //
-$found_templateset = false;
-for ($i = 0; $i < count($aTemplateSet); ++$i){
-    if ($aTemplateSet[$i]['ID'] == $sTemplateID) {
-        $found_templateset = true;
-        break;
-    }
-}
+$sDefaultTemplateID = Template::get_default_template_set();
+$sTemplateID = getPref($data_dir, $username, 'sTemplateID', $sDefaultTemplateID);
 
-// FIXME: do we need/want to check here for actual presence of template sets?
-// selected template not available, fall back to default template
+
+// load user theme
 //
-if (!$found_templateset) {
-    $sTemplateID = ( !isset($aTemplateSet[$templateset_default]['ID']) ?
-                     'default' : $aTemplateSet[$templateset_default]['ID'] );
-}
+$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;
 
-$theme = ( !isset($theme) ? array() : $theme );
-$color = ( !isset($color) ? array() : $color );
 
-$chosen_theme = getPref($data_dir, $username, 'chosen_theme');
+// 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;
 
-/* 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) {
+// 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;
-        break;
-    }
+    $k++;
 }
-
-$chosen_theme = (!$found_theme ? '' : $chosen_theme);
-
-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'];
-    }
+if (!$found_theme) {
+    $icon_theme = $default_icon_theme;
 }
 
-// user's icon theme, if using icons
-$icon_theme = getPref($data_dir, $username, 'icon_theme', 'images/themes/xp/' );
-
-/*
- * 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' ? Template::calculate_template_images_directory($sTemplateID) : $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 );
@@ -184,9 +157,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();
 
@@ -286,6 +256,9 @@ $collapse_folders =
 $show_html_default =
    getPref($data_dir, $username, 'show_html_default', SMPREF_ON);
 
+$addrsrch_fullname =
+   getPref($data_dir, $username, 'addrsrch_fullname', SMPREF_ON);
+
 $enable_forward_as_attachment =
    getPref($data_dir, $username, 'enable_forward_as_attachment', SMPREF_ON);
 
@@ -344,11 +317,9 @@ $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 */
@@ -404,4 +375,65 @@ if (! isset($use_smtp_tls)) {
     $use_smtp_tls = false;
 }
 
-do_hook('loading_prefs');
+
+// allow plugins to override user prefs
+//
+do_hook('loading_prefs', $null);
+
+
+// check user prefs template selection against templates actually available
+//
+$found_templateset = false;
+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');
+