| | |
| | | // add some labels to client |
| | | $OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel', |
| | | 'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage', |
| | | 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror', |
| | | 'autocompletechars'); |
| | | 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'uploadingmany', |
| | | 'fileuploaderror', 'autocompletechars'); |
| | | |
| | | $OUTPUT->set_env('compose_id', $COMPOSE_ID); |
| | | |
| | |
| | | { |
| | | $_SESSION['compose']['forward_uid'] = $msg_uid; |
| | | $OUTPUT->set_env('compose_mode', 'forward'); |
| | | |
| | | if (!empty($_SESSION['compose']['param']['attachment'])) |
| | | $MESSAGE->forward_attachment = true; |
| | | } |
| | | } |
| | | |
| | |
| | | else if ($_SESSION['compose']['param']['body']) { |
| | | $body = $_SESSION['compose']['param']['body']; |
| | | $isHtml = false; |
| | | } |
| | | // forward as attachment |
| | | else if ($compose_mode == RCUBE_COMPOSE_FORWARD && $MESSAGE->forward_attachment) { |
| | | $isHtml = rcmail_compose_editor_mode(); |
| | | $body = ''; |
| | | if (empty($_SESSION['compose']['attachments'])) |
| | | rcmail_write_forward_attachment($MESSAGE); |
| | | } |
| | | // reply/edit/draft/forward |
| | | else if ($compose_mode) { |
| | |
| | | return $cid_map; |
| | | } |
| | | |
| | | // Creates an attachment from the forwarded message |
| | | function rcmail_write_forward_attachment(&$message) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | if (strlen($message->subject)) { |
| | | $name = mb_substr($message->subject, 0, 64) . '.eml'; |
| | | } |
| | | else { |
| | | $name = 'message_rfc822.eml'; |
| | | } |
| | | |
| | | $mem_limit = parse_bytes(ini_get('memory_limit')); |
| | | $curr_mem = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB |
| | | $data = $path = null; |
| | | |
| | | // don't load too big attachments into memory |
| | | if ($mem_limit > 0 && $message->size > $mem_limit - $curr_mem) { |
| | | $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); |
| | | $path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | if ($fp = fopen($path, 'w')) { |
| | | $RCMAIL->imap->get_raw_body($message->uid, $fp); |
| | | fclose($fp); |
| | | } else |
| | | return false; |
| | | } else { |
| | | $data = $RCMAIL->imap->get_raw_body($message->uid); |
| | | } |
| | | |
| | | $attachment = array( |
| | | 'group' => $_SESSION['compose']['id'], |
| | | 'name' => $name, |
| | | 'mimetype' => 'message/rfc822', |
| | | 'data' => $data, |
| | | 'path' => $path, |
| | | 'size' => $path ? filesize($path) : strlen($data), |
| | | ); |
| | | |
| | | $attachment = $RCMAIL->plugins->exec_hook('attachment_save', $attachment); |
| | | |
| | | if ($attachment['status']) { |
| | | unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']); |
| | | $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; |
| | | return true; |
| | | } else if ($path) { |
| | | @unlink($path); |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function rcmail_save_attachment(&$message, $pid) |
| | | { |
| | | $rcmail = rcmail::get_instance(); |
| | | $part = $message->mime_parts[$pid]; |
| | | $mem_limit = parse_bytes(ini_get('memory_limit')); |
| | | $curr_mem = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB |
| | |
| | | |
| | | // don't load too big attachments into memory |
| | | if ($mem_limit > 0 && $part->size > $mem_limit - $curr_mem) { |
| | | $rcmail = rcmail::get_instance(); |
| | | $temp_dir = unslashify($rcmail->config->get('temp_dir')); |
| | | $path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | if ($fp = fopen($path, 'w')) { |
| | |
| | | 'size' => $path ? filesize($path) : strlen($data), |
| | | ); |
| | | |
| | | $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment); |
| | | $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment); |
| | | |
| | | if ($attachment['status']) { |
| | | unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']); |
| | |
| | | function rcmail_store_target_selection($attrib) |
| | | { |
| | | $attrib['name'] = '_store_target'; |
| | | $select = rcmail_mailbox_select(array_merge($attrib, array('noselection' => '- '.rcube_label('dontsave').' -'))); |
| | | $select = rcmail_mailbox_select(array_merge($attrib, array( |
| | | 'noselection' => '- '.rcube_label('dontsave').' -', |
| | | 'folder_filter' => 'mail' |
| | | ))); |
| | | return $select->show($_SESSION['compose']['param']['sent_mbox'], $attrib); |
| | | } |
| | | |