+
+// 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');
+