Misc templating changes. Note that the global template set indicator is now called .
[squirrelmail.git] / include / load_prefs.php
index f9e6346df7a54a69d08d0306f64ccc4988b27845..169908b74ebd62cbc5e74dd9f5a7c128cc904d6c 100644 (file)
@@ -29,35 +29,34 @@ 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 );
+$aTemplateSet = (!isset($aTemplateSet) || !is_array($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);
+$sTemplateID = getPref($data_dir, $username, 'sTemplateID', 'default');
 
+// 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 : '');
+
+// 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) {
-    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/';
+    $sTemplateID = ( !isset($aTemplateSet[$templateset_default]['ID']) ?
+                     'default' : $aTemplateSet[$templateset_default]['ID'] );
 }
 
+$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 */
@@ -89,7 +88,7 @@ $icon_theme = getPref($data_dir, $username, 'icon_theme', 'images/themes/xp/' );
  *       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' ? $sTplDir . 'images/' : $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 );