diff -uNr imp-2.2.0.orig/addcontact.php3 imp-2.2.0/addcontact.php3
--- imp-2.2.0.orig/addcontact.php3	Tue Jul 18 11:13:42 2000
+++ imp-2.2.0/addcontact.php3	Mon Jul 24 14:10:38 2000
@@ -39,6 +39,9 @@
 if (!isset($imp) || !is_object($imp)) { echo '<script language="JavaScript">window.close()</script>'; exit; }
 $imp->unpickle();
 $imp->authenticate(OP_READONLY);
+if (isset($imp) && isset($imp->server) &6 isset($imp->user)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 
 /* doctype */
 require("$default->include_dir/doctype.inc");
diff -uNr imp-2.2.0.orig/compose.php3 imp-2.2.0/compose.php3
--- imp-2.2.0.orig/compose.php3	Tue Jul 18 11:13:44 2000
+++ imp-2.2.0/compose.php3	Mon Jul 24 14:10:45 2000
@@ -198,6 +198,9 @@
 if (!isset($imp) || !is_object($imp)) { echo '<script language="JavaScript">window.close()</script>'; exit; }
 $imp->unpickle();
 $imp->authenticate(); /* login */
+if (isset($imp) && isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 $get_sig = true;
 
 /* array to translate string actions into the appropriate integer ID */
diff -uNr imp-2.2.0.orig/config/defaults.php3.dist imp-2.2.0/config/defaults.php3.dist
--- imp-2.2.0.orig/config/defaults.php3.dist	Tue Jul 18 11:13:47 2000
+++ imp-2.2.0/config/defaults.php3.dist	Mon Jul 24 13:19:02 2000
@@ -384,6 +384,9 @@
 // What is the name of the table where contacts are stored?
 $default->db_address_table = 'imp_addr';
 
+// What is the name of the table where user themes are stored?
+$default->db_theme_table = 'imp_theme';
+
 // If the database is on a non-standard port, what is it?
 $default->db_server_port = '';
 
diff -uNr imp-2.2.0.orig/contacts.php3 imp-2.2.0/contacts.php3
--- imp-2.2.0.orig/contacts.php3	Tue Jul 18 11:13:44 2000
+++ imp-2.2.0/contacts.php3	Mon Jul 24 14:10:50 2000
@@ -41,6 +41,9 @@
 page_close();
 if (!isset($imp) || !is_object($imp)) { echo '<script language="JavaScript">window.close()</script>'; exit; }
 $imp->unpickle();
+if (isset($imp) && isset($imp->server) && isset($imp->user)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 /* proceed only with a valid login */
 
 /* doctype */
diff -uNr imp-2.2.0.orig/folders.php3 imp-2.2.0/folders.php3
--- imp-2.2.0.orig/folders.php3	Tue Jul 18 11:13:44 2000
+++ imp-2.2.0/folders.php3	Mon Jul 24 14:10:55 2000
@@ -16,7 +16,7 @@
  
 */
 
-
+$need_horde_db=1;
 require '../lib/horde.lib';
 require './lib/imp.lib';           /* IMPlib is the IMP function library  */
 require './config/defaults.php3';  /* Defaults configuration file */
@@ -38,6 +38,9 @@
 if (!isset($imp) || !is_object($imp)) { header('Location: ' . $sess->url('login.php3?reason=logout')); exit; }
 $imp->unpickle();
 $imp->authenticate(OP_HALFOPEN);
+if (isset($imp) && isset($imp->server) && isset($imp->user)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 
 /* doctype */
 require "$default->include_dir/doctype.inc";
diff -uNr imp-2.2.0.orig/mailbox.php3 imp-2.2.0/mailbox.php3
--- imp-2.2.0.orig/mailbox.php3	Tue Jul 18 11:13:45 2000
+++ imp-2.2.0/mailbox.php3	Mon Jul 24 14:11:25 2000
@@ -115,6 +115,9 @@
 
 /* only proceed on a valid login */
 $imp->authenticate();
+if (isset($imp) && isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 
 /* indicates invalid login or expired login so skip all the crap below */
 if (isset($imp->stream) && (!$imp->stream)) exit;
diff -uNr imp-2.2.0.orig/menu.php3 imp-2.2.0/menu.php3
--- imp-2.2.0.orig/menu.php3	Tue Jul 18 11:13:45 2000
+++ imp-2.2.0/menu.php3	Mon Jul 24 14:11:30 2000
@@ -36,7 +36,7 @@
 	return $text;
 }
 
-
+$need_horde_db=1;
 require '../lib/horde.lib';
 require './lib/imp.lib';           /* IMPlib is the IMP function library  */
 require '../config/horde.php3';
@@ -59,6 +59,9 @@
 if (isset($imp)) {
     $menu = IMPMENU_MAIN;
     $imp->unpickle();
+    if(isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+    }
 }
 
 $extra_menus = '';
diff -uNr imp-2.2.0.orig/message.php3 imp-2.2.0/message.php3
--- imp-2.2.0.orig/message.php3	Mon Jul 24 09:13:48 2000
+++ imp-2.2.0/message.php3	Mon Jul 24 14:11:36 2000
@@ -199,7 +199,7 @@
 	return implode($break, $result);
 }
 
-
+$need_horde_db=1;
 require './lib/mimetypes.lib';     /* Mime handling routes */
 require './config/defaults.php3';  /* Defaults configuration file */
 require './config/html.php3';
@@ -221,6 +221,9 @@
 }
 $imp->unpickle();
 $imp->authenticate();
+if (isset($imp) && isset($imp->server) && isset($imp->user)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 $sorted = explode(':', $imp->msgl);
 if ($array_index == count($sorted)-1 || $array_index == 0 || (isset($actionID) && ($actionID == DELETE_MESSAGES || $actionID == MOVE_MESSAGES || $actionID == COPY_MESSAGES) && $array_index == count($sorted)-2)) {
   $sorted = messageRange(imap_sort($imp->stream, $imp->sortby, $imp->sortdir, SE_UID), $array_index + $imp->offset + 1, &$offset, &$array_index);
diff -uNr imp-2.2.0.orig/poppassd.php3 imp-2.2.0/poppassd.php3
--- imp-2.2.0.orig/poppassd.php3	Tue Jul 18 11:13:46 2000
+++ imp-2.2.0/poppassd.php3	Mon Jul 24 14:11:44 2000
@@ -16,6 +16,7 @@
   
 */
 
+$need_horde_db=1;
 if (!defined('HORDE_LIB')) include '../lib/horde.lib';
 require './lib/imp.lib';           /* IMPlib is the IMP function library  */
 require '../config/horde.php3';
@@ -37,6 +38,9 @@
 page_close();
 if (!isset($imp) || !is_object($imp)) { header("Location: login.php3?reason=logout"); exit; }
 $imp->unpickle();
+if (isset($imp) && isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 
 /* doctype */
 require "$default->include_dir/doctype.inc";
diff -uNr imp-2.2.0.orig/prefs.php3 imp-2.2.0/prefs.php3
--- imp-2.2.0.orig/prefs.php3	Tue Jul 18 11:13:46 2000
+++ imp-2.2.0/prefs.php3	Mon Jul 24 14:11:50 2000
@@ -53,7 +53,9 @@
 page_close();
 if (!isset($imp) || !is_object($imp)) { header('Location: ' . $sess->url('login.php3?reason=logout')); exit; }
 $imp->unpickle();
-
+if (isset($imp) && isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+}
 
 $errormsg = '';
 $include_refresh = false;
diff -uNr imp-2.2.0.orig/select.php3 imp-2.2.0/select.php3
--- imp-2.2.0.orig/select.php3	Tue Jul 18 11:13:46 2000
+++ imp-2.2.0/select.php3	Mon Jul 24 14:11:55 2000
@@ -15,7 +15,8 @@
   Boston, MA 02111-1307, USA.
   
 */
-    
+
+$need_horde_db=1;
 require '../lib/horde.lib';
 require './lib/imp.lib';             /* IMPlib is the IMP function library  */
 require './config/defaults.php3';    /* Defaults configuration file */
@@ -46,6 +47,9 @@
   // check this again because when the $imp object sets itself up, it
   // might change the value (for instance, if the protocol is pop3)
   if ($default->user_use_folders) {
+    if (isset($imp) && isset($imp->user) && isset($imp->server)) {
+	imp_user_theme($imp->user, $imp->server);
+    }
     include "$default->include_dir/doctype.inc";
     include "$default->include_dir/select/header.inc";
     
diff -uNr imp-2.2.0.orig/status.php3 imp-2.2.0/status.php3
--- imp-2.2.0.orig/status.php3	Tue Jul 18 11:13:47 2000
+++ imp-2.2.0/status.php3	Mon Jul 24 14:12:32 2000
@@ -16,6 +16,8 @@
  
 */
 
+
+$need_horde_db=1;
 require '../lib/horde.lib';
 require './lib/imp.lib';
 require './config/defaults.php3';
@@ -54,6 +56,7 @@
   $refresh = true;
   
   $imp->authenticate(OP_HALFOPEN);
+  imp_user_theme($imp->user, $imp->server);
   if ($imp->servtype == 'pop3') {
       $server_string = '{' . $imp->server . ':' . $imp->port . '}';;
   } else {
diff -uNr imp-2.2.0.orig/view.php3 imp-2.2.0/view.php3
--- imp-2.2.0.orig/view.php3	Tue Jul 18 11:13:47 2000
+++ imp-2.2.0/view.php3	Mon Jul 24 14:12:35 2000
@@ -41,7 +41,6 @@
 if (!isset($imp) || !is_object($imp)) header("Location: login.php3?reason=logout");
 $imp->unpickle();
 $imp->authenticate();
-
 $structure = imap_fetchstructure($imp->stream, $index, FT_UID);
 $foo = false;
 $attachments = MimeParseStructure($structure, '', $foo);
