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