From a894ba5029a09fb9d0453b5cf9c944ce313f8a48 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Thu, 29 Jun 2006 19:41:40 -0400 Subject: [PATCH] Removeable attachments, Auto-default folder creation, bug fixes --- program/include/rcube_imap.inc | 81 +++++++++++++++++++++++++++++++--------- 1 files changed, 63 insertions(+), 18 deletions(-) diff --git a/program/include/rcube_imap.inc b/program/include/rcube_imap.inc index e579c88..d825a35 100644 --- a/program/include/rcube_imap.inc +++ b/program/include/rcube_imap.inc @@ -36,7 +36,7 @@ * * @package RoundCube Webmail * @author Thomas Bruederli <roundcube@gmail.com> - * @version 1.22 + * @version 1.26 * @link http://ilohamail.org */ class rcube_imap @@ -362,13 +362,18 @@ if (!is_array($a_folders) || !sizeof($a_folders)) $a_folders = array(); - // create INBOX if it does not exist - if (!in_array_nocase('INBOX', $a_folders)) + // create Default folders if they do not exist + global $CONFIG; + foreach ($CONFIG['default_imap_folders'] as $folder) { - $this->create_mailbox('INBOX', TRUE); - array_unshift($a_folders, 'INBOX'); + if (!in_array_nocase($folder, $a_folders)) + { + $this->create_mailbox($folder, TRUE); + $this->subscribe($folder); + } } + $a_folders = iil_C_ListSubscribed($this->conn, $this->_mod_mailbox($root), $filter); $a_mailbox_cache = array(); // write mailboxlist to cache @@ -989,8 +994,9 @@ // append a mail message (source) to a specific mailbox - function save_message($mbox_name, $message) + function save_message($mbox_name, &$message) { + $mbox_name = stripslashes($mbox_name); $mailbox = $this->_mod_mailbox($mbox_name); // make sure mailbox exists @@ -1010,6 +1016,8 @@ // move a message from one mailbox to another function move_message($uids, $to_mbox, $from_mbox='') { + $to_mbox = stripslashes($to_mbox); + $from_mbox = stripslashes($from_mbox); $to_mbox = $this->_mod_mailbox($to_mbox); $from_mbox = $from_mbox ? $this->_mod_mailbox($from_mbox) : $this->mailbox; @@ -1067,6 +1075,7 @@ // mark messages as deleted and expunge mailbox function delete_message($uids, $mbox_name='') { + $mbox_name = stripslashes($mbox_name); $mailbox = $mbox_name ? $this->_mod_mailbox($mbox_name) : $this->mailbox; // convert the list of uids to array @@ -1114,6 +1123,7 @@ // clear all messages in a specific mailbox function clear_mailbox($mbox_name=NULL) { + $mbox_name = stripslashes($mbox_name); $mailbox = !empty($mbox_name) ? $this->_mod_mailbox($mbox_name) : $this->mailbox; $msg_count = $this->_messagecount($mailbox, 'ALL'); @@ -1140,6 +1150,7 @@ // send IMAP expunge command and clear cache function expunge($mbox_name='', $clear_cache=TRUE) { + $mbox_name = stripslashes($mbox_name); $mailbox = $mbox_name ? $this->_mod_mailbox($mbox_name) : $this->mailbox; return $this->_expunge($mailbox, $clear_cache); } @@ -1261,9 +1272,30 @@ // set a new name to an existing mailbox - function rename_mailbox($mbox_name, $new_name) + function rename_mailbox($mbox_name, $new_name, $subscribe=TRUE) { - // not implemented yet + $result = FALSE; + + // replace backslashes + $name = preg_replace('/[\\\]+/', '-', $new_name); + + $name_enc = UTF7EncodeString($new_name); + + // reduce mailbox name to 100 chars + $name_enc = substr($name_enc, 0, 100); + + $abs_name = $this->_mod_mailbox($name_enc); + $a_mailbox_cache = $this->get_cache('mailboxes'); + + if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) + $result = iil_C_RenameFolder($this->conn, $mbox_name, $abs_name); + + // update mailboxlist cache + if ($result && $subscribe) + $this->unsubscribe($mbox_name); + $this->subscribe($name_enc); + + return $result ? $name : FALSE; } @@ -1693,8 +1725,13 @@ return $str; } - - + + + /** + * Decode a mime-encoded string to internal charset + * + * @access static + */ function decode_mime_string($input) { $out = ''; @@ -1716,11 +1753,17 @@ return $out; } - else - return $input; + + // no encoding information, defaults to what is specified in the class header + return rcube_charset_convert($input, 'ISO-8859-1'); } + /** + * Decode a part of a mime-encoded string + * + * @access static + */ function _decode_mime_string_part($str) { $a = explode('?', $str); @@ -1793,8 +1836,10 @@ if (is_array($ctype_param) && !empty($ctype_param['charset'])) return rcube_charset_convert($body, $ctype_param['charset']); - return $body; + // defaults to what is specified in the class header + return rcube_charset_convert($body, 'ISO-8859-1'); } + @@ -1840,14 +1885,14 @@ return array_merge($a_defaults, $a_out); } - function get_id($uid) + function get_id($uid, $mbox_name=NULL) { - return $this->_uid2id($uid); + return $this->_uid2id($uid, $mbox_name); } - function get_uid($id) + function get_uid($id,$mbox_name=NULL) { - return $this->_id2uid($id); + return $this->_id2uid($id, $mbox_name); } function _uid2id($uid, $mbox_name=NULL) @@ -2086,4 +2131,4 @@ return trim($output); } -?> \ No newline at end of file +?> -- Gitblit v1.9.1