summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include
diff options
context:
space:
mode:
authorNathan Kinkade <nkinkade@nkinka.de>2009-03-05 21:11:55 +0000
committerNathan Kinkade <nkinkade@nkinka.de>2009-03-11 12:51:51 +0000
commit8fd923e70c08c103a3b9aa644431e4ee8cd0b330 (patch)
treec69344a978609e5b7a92d8de4d30380bfb878bd3 /roundcubemail/program/include
parentbc3c5f3f9922ae33c3f0077b71650ec5749d72dc (diff)
Added functionality to copy messages from one mailbox to another.
Diffstat (limited to 'roundcubemail/program/include')
-rw-r--r--roundcubemail/program/include/rcube_imap.php39
1 files changed, 39 insertions, 0 deletions
diff --git a/roundcubemail/program/include/rcube_imap.php b/roundcubemail/program/include/rcube_imap.php
index 788b0ff58..2f3a49cb1 100644
--- a/roundcubemail/program/include/rcube_imap.php
+++ b/roundcubemail/program/include/rcube_imap.php
@@ -1758,6 +1758,45 @@ class rcube_imap
return $moved;
}
+ /**
+ * Copy a message from one mailbox to another
+ *
+ * @param string List of UIDs to move, separated by comma
+ * @param string Target mailbox
+ * @param string Source mailbox
+ * @return boolean True on success, False on error
+ */
+ function copy_message($uids, $to_mbox, $from_mbox='')
+ {
+ $to_mbox = $this->_mod_mailbox($to_mbox);
+ $from_mbox = $from_mbox ? $this->_mod_mailbox($from_mbox) : $this->mailbox;
+
+ // make sure mailbox exists
+ if ($to_mbox != 'INBOX' && !in_array($to_mbox, $this->_list_mailboxes()))
+ {
+ if (in_array($to_mbox_in, $this->default_folders))
+ $this->create_mailbox($to_mbox_in, TRUE);
+ else
+ return FALSE;
+ }
+
+ // convert the list of uids to array
+ $a_uids = is_string($uids) ? explode(',', $uids) : (is_array($uids) ? $uids : NULL);
+
+ // exit if no message uids are specified
+ if (!is_array($a_uids))
+ return false;
+
+ // convert uids to message ids
+ $a_mids = array();
+ foreach ($a_uids as $uid)
+ $a_mids[] = $this->_uid2id($uid, $from_mbox);
+
+ $iil_copy = iil_C_Copy($this->conn, join(',', $a_mids), $from_mbox, $to_mbox);
+ $copied = !($iil_copy === false || $iil_copy < 0);
+
+ return $copied;
+ }
/**
* Mark messages as deleted and expunge mailbox