Removing check that is no longer needed.
[squirrelmail.git] / include / load_prefs.php
index d6e30f3163b3dc9692f7ca76747b3a49eb3785cd..8df7e9d479cc9341f5789538674b0b3973bb5d6e 100644 (file)
  * @package squirrelmail
  */
 
-
 /**
  * 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) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
-     (isset($HTTP_SERVER_SERVER) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
+if ((isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == __FILE__) ||
+     (isset($HTTP_SERVER_SERVER['SCRIPT_FILENAME']) && $HTTP_SERVER_SERVER['SCRIPT_FILENAME'] == __FILE__) ) {
     header("Location: ../src/login.php");
     die();
 }
@@ -28,38 +29,68 @@ 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' );
 
-$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;
+// template set setup
+//
+$sDefaultTemplateID = Template::get_default_template_set();
+$sTemplateID = getPref($data_dir, $username, 'sTemplateID', $sDefaultTemplateID);
 
-/* need to adjust $chosen_template path with SM_PATH */
-$sTplDir = preg_replace("/(\.\.\/){1,}/", SM_PATH, $sTplDir);
+// need to build this object now because it is used below to validate
+// user css theme choice
+//
+$oTemplate = Template::construct_template($sTemplateID);
 
+// check user prefs template selection against templates actually available
+//
+$found_templateset = false;
 for ($i = 0; $i < count($aTemplateSet); ++$i){
-    if ($aTemplateSet[$i]['PATH'] == $sTplDir) {
+    if ($aTemplateSet[$i]['ID'] == $sTemplateID) {
         $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/';
+
+// 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;
+
+// Load user theme
+$chosen_theme = getPref($data_dir, $username, 'chosen_theme');
+$found_theme = false;
+$chosen_theme_path = empty($chosen_theme) ?
+                     $chosen_theme_path = 'u_'.$user_themes[$user_theme_default]['PATH'] :
+                     $chosen_theme;
+
+// 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);
+$k = 0;
+while (!$found_theme && $k < count($user_themes)) {
+    if ('u_'.$user_themes[$k]['PATH'] == $chosen_theme_path)
+        $found_theme = true;
+    $k++;
+}
+$template_themes = $oTemplate->get_alternative_stylesheets();
+while (!$found_theme && (list($path, $name) = each($template_themes))) {
+    if ('t_'.$path == $chosen_theme_path)
+        $found_theme = true;
+}
+    
+if (!$found_theme || $chosen_theme == 'none') {
+    $chosen_theme_path = NULL;
 }
 
+/* ----- SB: Holding on to the following code incase I need to reference later.  
+       Will remove eventually. :)
+   
+$theme = ( !isset($theme) ? array() : $theme );
+$color = ( !isset($color) ? array() : $color );
+
+$chosen_theme = getPref($data_dir, $username, 'chosen_theme');
 $found_theme = false;
 
-/* need to adjust $chosen_theme path with SM_PATH */
+// 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){
@@ -71,27 +102,6 @@ for ($i = 0; $i < count($theme); ++$i){
 
 $chosen_theme = (!$found_theme ? '' : $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 {
@@ -101,17 +111,32 @@ if (isset($chosen_theme) && $found_theme && (file_exists($chosen_theme))) {
     }
 }
 
+------ */
+
 // 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/';
+$icon_theme = getPref($data_dir, $username, 'icon_theme');
+$default_icon_theme = $icon_themes[$icon_theme_def]['PATH'];
+$found_theme = false;
+
+// 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++;
+}
+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;
+$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 );
@@ -397,7 +422,16 @@ $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);
 
-
+/**
+ * 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 */
 
@@ -419,5 +453,3 @@ if (! isset($use_smtp_tls)) {
 }
 
 do_hook('loading_prefs');
-
-?>