From c8cf268b9db55ca0a27f669a060eea320b2d5f9e Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 02 Mar 2010 12:33:51 -0500
Subject: [PATCH] No more case-insensitive folder name comparisons

---
 program/include/rcube_imap.php |   49 +++++++++++++++++++++++++------------------------
 1 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 128e775..e485226 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -56,7 +56,6 @@
   var $default_charset = 'ISO-8859-1';
   var $struct_charset = NULL;
   var $default_folders = array('INBOX');
-  var $default_folders_lc = array('inbox');
   var $fetch_add_headers = '';
   var $cache = array();
   var $cache_keys = array();  
@@ -242,15 +241,10 @@
     if (is_array($arr))
       {
       $this->default_folders = $arr;
-      $this->default_folders_lc = array();
 
       // add inbox if not included
       if (!in_array_nocase('INBOX', $this->default_folders))
         array_unshift($this->default_folders, 'INBOX');
-
-      // create a second list with lower cased names
-      foreach ($this->default_folders as $mbox)
-        $this->default_folders_lc[] = strtolower($mbox);
       }
     }
 
@@ -1699,17 +1693,27 @@
   /**
    * Append a mail message (source) to a specific mailbox
    *
-   * @param string Target mailbox
-   * @param string Message source
+   * @param string   Target mailbox
+   * @param string   The message source string or filename
+   * @param string   Headers string if $message contains only the body
+   * @param boolean  True if $message is a filename
+   *
    * @return boolean True on success, False on error
    */
-  function save_message($mbox_name, &$message)
+  function save_message($mbox_name, &$message, $headers='', $is_file=false)
     {
     $mailbox = $this->mod_mailbox($mbox_name);
 
     // make sure mailbox exists
-    if (($mailbox == 'INBOX') || in_array($mailbox, $this->_list_mailboxes()))
-      $saved = iil_C_Append($this->conn, $mailbox, $message);
+    if (($mailbox == 'INBOX') || in_array($mailbox, $this->_list_mailboxes())) {
+      if ($is_file) {
+        $separator = rcmail::get_instance()->config->header_delimiter();
+        $saved = iil_C_AppendFromFile($this->conn, $mailbox, $message,
+          $headers, $separator.$separator);
+        }
+      else
+        $saved = iil_C_Append($this->conn, $mailbox, $message);
+      }
 
     if ($saved)
       {
@@ -2139,16 +2143,16 @@
    */
   function create_default_folders()
     {
-    $a_folders = iil_C_ListMailboxes($this->conn, $this->mod_mailbox(''), 'Drafts');
+    $a_folders = iil_C_ListMailboxes($this->conn, $this->mod_mailbox(''), '*');
     $a_subscribed = iil_C_ListSubscribed($this->conn, $this->mod_mailbox(''), '*');
     
     // create default folders if they do not exist
     foreach ($this->default_folders as $folder)
       {
       $abs_name = $this->mod_mailbox($folder);
-      if (!in_array_nocase($abs_name, $a_folders))
+      if (!in_array($abs_name, $a_folders))
         $this->create_mailbox($folder, TRUE);
-      else if (!in_array_nocase($abs_name, $a_subscribed))
+      else if (!in_array($abs_name, $a_subscribed))
         $this->subscribe($folder);
       }
     }
@@ -2937,7 +2941,7 @@
       if ($folder{0}=='.')
         continue;
 
-      if (($p = array_search(strtolower($folder), $this->default_folders_lc)) !== false && !$a_defaults[$p])
+      if (($p = array_search($folder, $this->default_folders)) !== false && !$a_defaults[$p])
         $a_defaults[$p] = $folder;
       else
         $folders[$folder] = mb_strtolower(rcube_charset_convert($folder, 'UTF7-IMAP'));
@@ -3001,15 +3005,12 @@
     {
     if (!$mbox_name)
       $mbox_name = $this->mailbox;
-      
-    $index = array_flip((array)$this->uid_id_map[$mbox_name]);
-    if (isset($index[$id]))
-      $uid = $index[$id];
-    else
-      {
-      $uid = iil_C_ID2UID($this->conn, $mbox_name, $id);
-      $this->uid_id_map[$mbox_name][$uid] = $id;
-      }
+
+    if ($uid = array_search($id, (array)$this->uid_id_map[$mbox_name]))
+      return $uid;
+
+    $uid = iil_C_ID2UID($this->conn, $mbox_name, $id);
+    $this->uid_id_map[$mbox_name][$uid] = $id;
     
     return $uid;
     }

--
Gitblit v1.9.1