| | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2005-2011, The Roundcube Dev Team | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | | | See the README file for a full license statement. | |
| | | | | |
| | | | PURPOSE: | |
| | | | Compose a new mail message with all headers and attachments | |
| | |
| | | // get identity record |
| | | function rcmail_get_identity($id) |
| | | { |
| | | global $USER, $OUTPUT; |
| | | global $RCMAIL, $OUTPUT; |
| | | |
| | | if ($sql_arr = $USER->get_identity($id)) { |
| | | if ($sql_arr = $RCMAIL->user->get_identity($id)) { |
| | | $out = $sql_arr; |
| | | $out['mailto'] = $sql_arr['email']; |
| | | $out['string'] = format_email_recipient($sql_arr['email'], |
| | |
| | | |
| | | // compose format=flowed content if enabled |
| | | if ($flowed = $RCMAIL->config->get('send_format_flowed', true)) |
| | | $message_body = rcube_message::format_flowed($message_body, min($LINE_LENGTH+2, 79)); |
| | | $message_body = rcube_mime::format_flowed($message_body, min($LINE_LENGTH+2, 79)); |
| | | else |
| | | $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n"); |
| | | |
| | |
| | | |
| | | // set replied/forwarded flag |
| | | if ($COMPOSE['reply_uid']) |
| | | $RCMAIL->imap->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']); |
| | | $RCMAIL->storage->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']); |
| | | else if ($COMPOSE['forward_uid']) |
| | | $RCMAIL->imap->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']); |
| | | $RCMAIL->storage->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']); |
| | | |
| | | } // End of SMTP Delivery Block |
| | | |
| | |
| | | |
| | | if ($store_target) { |
| | | // check if folder is subscribed |
| | | if ($RCMAIL->imap->mailbox_exists($store_target, true)) |
| | | if ($RCMAIL->storage->folder_exists($store_target, true)) |
| | | $store_folder = true; |
| | | // folder may be existing but not subscribed (#1485241) |
| | | else if (!$RCMAIL->imap->mailbox_exists($store_target)) |
| | | $store_folder = $RCMAIL->imap->create_mailbox($store_target, true); |
| | | else if ($RCMAIL->imap->subscribe($store_target)) |
| | | else if (!$RCMAIL->storage->folder_exists($store_target)) |
| | | $store_folder = $RCMAIL->storage->create_folder($store_target, true); |
| | | else if ($RCMAIL->storage->subscribe($store_target)) |
| | | $store_folder = true; |
| | | |
| | | // append message to sent box |
| | |
| | | 'message' => "Could not create message: ".$msg->getMessage()), |
| | | TRUE, FALSE); |
| | | else { |
| | | $saved = $RCMAIL->imap->save_message($store_target, $msg, $headers, $mailbody_file ? true : false); |
| | | $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers, $mailbody_file ? true : false); |
| | | } |
| | | |
| | | if ($mailbody_file) { |
| | |
| | | if ($olddraftmessageid) { |
| | | // delete previous saved draft |
| | | // @TODO: use message UID (remember to check UIDVALIDITY) to skip this SEARCH |
| | | $delete_idx = $RCMAIL->imap->search_once($CONFIG['drafts_mbox'], |
| | | $delete_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'], |
| | | 'HEADER Message-ID '.$olddraftmessageid); |
| | | |
| | | if ($del_uid = $delete_idx->getElement('FIRST')) { |
| | | $deleted = $RCMAIL->imap->delete_message($del_uid, $CONFIG['drafts_mbox']); |
| | | if ($del_uid = $delete_idx->get_element('FIRST')) { |
| | | $deleted = $RCMAIL->storage->delete_message($del_uid, $CONFIG['drafts_mbox']); |
| | | |
| | | // raise error if deletion of old draft failed |
| | | if (!$deleted) |
| | |
| | | |
| | | // remember new draft-uid ($saved could be an UID or TRUE here) |
| | | if (is_bool($saved)) { |
| | | $draft_idx = $RCMAIL->imap->search_once($CONFIG['drafts_mbox'], 'HEADER Message-ID '.$msgid); |
| | | $saved = $draft_idx->getElement('FIRST'); |
| | | $draft_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'], 'HEADER Message-ID '.$msgid); |
| | | $saved = $draft_idx->get_element('FIRST'); |
| | | } |
| | | $COMPOSE['param']['draft_uid'] = $saved; |
| | | $plugin = $RCMAIL->plugins->exec_hook('message_draftsaved', array('msgid' => $msgid, 'uid' => $saved, 'folder' => $store_target)); |
| | | |
| | | // display success |
| | | $OUTPUT->show_message('messagesaved', 'confirmation'); |
| | | $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'messagesaved', 'confirmation'); |
| | | |
| | | // update "_draft_saveid" and the "cmp_hash" to prevent "Unsaved changes" warning |
| | | $OUTPUT->command('set_draft_id', $msgid); |