// 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){
}
}
+------ */
+
// 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' ? SM_PATH . 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 );