| | |
| | | unset($_SESSION['compose']['attachments'][$id]); |
| | | $OUTPUT->command('remove_from_attachment_list', "rcmfile$id"); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | | exit; |
| | | } |
| | | |
| | | if ($RCMAIL->action=='display-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_GET['_file'], $regs)) |
| | |
| | | { |
| | | $to_addresses = $IMAP->decode_address_list($fvalue); |
| | | $fvalue = ''; |
| | | |
| | | foreach ($to_addresses as $addr_part) |
| | | { |
| | | if (!empty($addr_part['mailto']) && !in_array($addr_part['mailto'], $sa_recipients) && (!$MESSAGE->compose_from || !in_array($addr_part['mailto'], $MESSAGE->compose_from))) |
| | | if (!empty($addr_part['mailto']) |
| | | && !in_array($addr_part['mailto'], $sa_recipients) |
| | | && (!$MESSAGE->compose_from |
| | | || !in_array($addr_part['mailto'], $MESSAGE->compose_from) |
| | | || count($to_addresses)==1)) // allow reply to yourself |
| | | { |
| | | $fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string']; |
| | | $sa_recipients[] = $addr_part['mailto']; |
| | |
| | | if ($fname && $field_type) |
| | | { |
| | | // pass the following attributes to the form class |
| | | $field_attrib = array('name' => $fname); |
| | | $field_attrib = array('name' => $fname, 'spellcheck' => 'false'); |
| | | foreach ($attrib as $attr => $value) |
| | | if (in_array($attr, $allow_attrib)) |
| | | $field_attrib[$attr] = $value; |
| | |
| | | // load draft message body |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) |
| | | $body = rcmail_create_draft_body($body, $isHtml); |
| | | |
| | | if ($isHtml) { |
| | | // replace cid with href in inline images links |
| | | foreach ((array)$_SESSION['compose']['attachments'] as $pid => $attachment) { |
| | | if ($attachment['content_id']) { |
| | | $body = str_replace('cid:'. $attachment['content_id'], |
| | | $OUTPUT->app->comm_path.'&_action=display-attachment&_file=rcmfile'.$pid, $body); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else if (!empty($_SESSION['compose']['param']['_body'])) |
| | | { |
| | |
| | | $msgtype = new html_hiddenfield(array('name' => '_is_html', 'value' => ($isHtml?"1":"0"))); |
| | | $out .= $msgtype->show(); |
| | | |
| | | // If desired, set this text area to be editable by TinyMCE |
| | | if ($isHtml) $attrib['class'] = "mce_editor"; |
| | | // If desired, set this textarea to be editable by TinyMCE |
| | | if ($isHtml) $attrib['class'] = 'mce_editor'; |
| | | $textarea = new html_textarea($attrib); |
| | | $out .= $textarea->show($body); |
| | | $out .= $form_end ? "\n$form_end" : ''; |
| | |
| | | $body = join("\n", $a_lines); |
| | | |
| | | // add title line |
| | | $prefix = sprintf("\n\n\nOn %s, %s wrote:\n", |
| | | $prefix = sprintf("On %s, %s wrote:\n", |
| | | $MESSAGE->headers->date, |
| | | $MESSAGE->get_header('from')); |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | $prefix = sprintf("<br /><br />On %s, %s wrote:<br />\n", |
| | | $prefix = sprintf("On %s, %s wrote:<br />\n", |
| | | $MESSAGE->headers->date, |
| | | htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | $prefix .= '<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%">'; |
| | | $suffix = "</blockquote>"; |
| | | |
| | | rcmail_write_inline_attachments($MESSAGE); |
| | | } |
| | | |
| | | return $prefix.$body.$suffix; |
| | |
| | | |
| | | if (!$bodyIsHtml) |
| | | { |
| | | $prefix = sprintf("\n\n\n-------- Original Message --------\nSubject: %s\nDate: %s\nFrom: %s\nTo: %s\n\n", |
| | | $MESSAGE->subject, |
| | | $MESSAGE->headers->date, |
| | | $MESSAGE->get_header('from'), |
| | | $MESSAGE->get_header('to')); |
| | | $prefix = "\n\n\n-------- Original Message --------\n"; |
| | | $prefix .= 'Subject: ' . $MESSAGE->subject . "\n"; |
| | | $prefix .= 'Date: ' . $MESSAGE->headers->date . "\n"; |
| | | $prefix .= 'From: ' . $MESSAGE->get_header('from') . "\n"; |
| | | $prefix .= 'To: ' . $MESSAGE->get_header('to') . "\n"; |
| | | if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from) |
| | | $prefix .= 'Reply-To: ' . $MESSAGE->get_header('replyto') . "\n"; |
| | | $prefix .= "\n"; |
| | | } |
| | | else |
| | | { |
| | |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Subject: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Date: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">From: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>" . |
| | | "</tbody></table><br>", |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>", |
| | | Q($MESSAGE->subject), |
| | | Q($MESSAGE->headers->date), |
| | | htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true), |
| | | htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | |
| | | if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Reply-To: </th><td>%s</td></tr>", |
| | | htmlspecialchars(Q($MESSAGE->get_header('replyto'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | |
| | | $prefix .= "</tbody></table><br>"; |
| | | } |
| | | |
| | | // add attachments |
| | |
| | | |
| | | function rcmail_write_compose_attachments(&$message, $bodyIsHtml) |
| | | { |
| | | global $RCMAIL, $IMAP; |
| | | |
| | | $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); |
| | | |
| | | if (!is_array($_SESSION['compose']['attachments'])) |
| | | $_SESSION['compose']['attachments'] = array(); |
| | | |
| | | foreach ((array)$message->mime_parts as $pid => $part) |
| | | { |
| | | if (($part->ctype_primary != 'message' || !$bodyIsHtml) && |
| | | ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] || |
| | | (empty($part->disposition) && $part->filename))) |
| | | ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] |
| | | || (empty($part->disposition) && $part->filename))) |
| | | { |
| | | $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | if ($fp = fopen($tmp_path, 'w')) |
| | | { |
| | | fwrite($fp, $message->get_part_content($pid)); |
| | | fclose($fp); |
| | | |
| | | $_SESSION['compose']['attachments'][] = array( |
| | | 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, |
| | | 'name' => $part->filename, |
| | | 'path' => $tmp_path |
| | | ); |
| | | } |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) |
| | | $_SESSION['compose']['attachments'][] = $attachment; |
| | | } |
| | | } |
| | | |
| | | $_SESSION['compose']['forward_attachments'] = true; |
| | | } |
| | | |
| | | |
| | | function rcmail_write_inline_attachments(&$message) |
| | | { |
| | | foreach ((array)$message->mime_parts as $pid => $part) |
| | | { |
| | | if ($part->content_id && $part->filename) |
| | | { |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) |
| | | $_SESSION['compose']['attachments'][] = $attachment; |
| | | } |
| | | } |
| | | } |
| | | |
| | | function rcmail_save_attachment(&$message, $pid) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); |
| | | $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | $part = $message->mime_parts[$pid]; |
| | | |
| | | if ($fp = fopen($tmp_path, 'w')) |
| | | { |
| | | $message->get_part_content($pid, $fp); |
| | | fclose($fp); |
| | | |
| | | return array( |
| | | 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, |
| | | 'name' => $part->filename, |
| | | 'path' => $tmp_path, |
| | | 'content_id' => $part->content_id |
| | | ); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | unset($attrib['form']); |
| | | |
| | | $attrib['name'] = '_subject'; |
| | | $attrib['spellcheck'] = 'true'; |
| | | $textfield = new html_inputfield($attrib); |
| | | |
| | | $subject = ''; |
| | |
| | | function rcmail_store_target_selection($attrib) |
| | | { |
| | | $attrib['name'] = '_store_target'; |
| | | $select = rcmail_mailbox_select(array('noselection' => '- '.rcube_label('dontsave').' -')); |
| | | $select = rcmail_mailbox_select(array_merge($attrib, array('noselection' => '- '.rcube_label('dontsave').' -'))); |
| | | return $select->show(rcmail::get_instance()->config->get('sent_mbox'), $attrib); |
| | | } |
| | | |