| | |
| | | $MESSAGE_FORM = NULL; |
| | | $MESSAGE = NULL; |
| | | |
| | | $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GET); |
| | | $_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID]; |
| | | |
| | | // Nothing below is called during message composition, only at "new/forward/reply/draft" initialization or |
| | | // if a compose-ID is given (i.e. when the compose step is opened in a new window/tab). |
| | | // Since there are many ways to leave the compose page improperly, it seems necessary to clean-up an old |
| | | // compose when a "new/forward/reply/draft" is called - otherwise the old session attachments will appear |
| | | |
| | | $MESSAGE_ID = get_input_value('_id', RCUBE_INPUT_GET); |
| | | if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != $MESSAGE_ID) |
| | | if (!is_array($_SESSION['compose'])) |
| | | { |
| | | rcmail_compose_cleanup(); |
| | | |
| | | // Infinite redirect prevention in case of broken session (#1487028) |
| | | if ($MESSAGE_ID) |
| | | if ($COMPOSE_ID) |
| | | raise_error(array('code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Invalid session"), true, true); |
| | |
| | | else { |
| | | $filename = basename($attach); |
| | | $attachment = array( |
| | | 'group' => $COMPOSE_ID, |
| | | 'name' => $filename, |
| | | 'mimetype' => rc_mime_content_type($attach, $filename), |
| | | 'path' => $attach |
| | | 'path' => $attach, |
| | | ); |
| | | } |
| | | |
| | |
| | | 'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'fileuploaderror', |
| | | 'autocompletechars'); |
| | | |
| | | $OUTPUT->set_env('compose_id', $COMPOSE_ID); |
| | | |
| | | // add config parameters to client script |
| | | if (!empty($CONFIG['drafts_mbox'])) { |
| | | $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']); |
| | |
| | | $OUTPUT->set_env('autocomplete_min_length', $CONFIG['autocomplete_min_length']); |
| | | |
| | | // get reference message and set compose mode |
| | | if ($msg_uid = $_SESSION['compose']['param']['reply_uid']) |
| | | if ($msg_uid = $_SESSION['compose']['param']['draft_uid']) { |
| | | $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']); |
| | | $compose_mode = RCUBE_COMPOSE_DRAFT; |
| | | } |
| | | else if ($msg_uid = $_SESSION['compose']['param']['reply_uid']) |
| | | $compose_mode = RCUBE_COMPOSE_REPLY; |
| | | else if ($msg_uid = $_SESSION['compose']['param']['forward_uid']) |
| | | $compose_mode = RCUBE_COMPOSE_FORWARD; |
| | | else if ($msg_uid = $_SESSION['compose']['param']['uid']) |
| | | $compose_mode = RCUBE_COMPOSE_EDIT; |
| | | else if ($msg_uid = $_SESSION['compose']['param']['draft_uid']) { |
| | | $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']); |
| | | $compose_mode = RCUBE_COMPOSE_DRAFT; |
| | | } |
| | | |
| | | $config_show_sig = $RCMAIL->config->get('show_sig', 1); |
| | | if ($config_show_sig == 1) |
| | |
| | | |
| | | foreach ($parts as $header) { |
| | | $fvalue = ''; |
| | | $decode_header = true; |
| | | |
| | | // we have a set of recipients stored is session |
| | | if ($header == 'to' && ($mailto_id = $_SESSION['compose']['param']['mailto']) |
| | | && $_SESSION['mailto'][$mailto_id] |
| | | ) { |
| | | $fvalue = urldecode($_SESSION['mailto'][$mailto_id]); |
| | | $decode_header = false; |
| | | } |
| | | else if (!empty($_POST['_'.$header])) { |
| | | $fvalue = get_input_value('_'.$header, RCUBE_INPUT_POST, TRUE); |
| | |
| | | |
| | | // split recipients and put them back together in a unique way |
| | | if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) { |
| | | $to_addresses = $IMAP->decode_address_list($fvalue); |
| | | $to_addresses = $IMAP->decode_address_list($fvalue, null, $decode_header); |
| | | $fvalue = array(); |
| | | |
| | | foreach ($to_addresses as $addr_part) { |
| | |
| | | if ($attachment = rcmail_save_image('program/blocked.gif', 'image/gif')) { |
| | | $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; |
| | | $body = preg_replace('#\./program/blocked\.gif#', |
| | | $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'], |
| | | $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id'], |
| | | $body); |
| | | } |
| | | } |
| | |
| | | if (!$skip && ($attachment = rcmail_save_attachment($message, $pid))) { |
| | | $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; |
| | | if ($bodyIsHtml && ($part->content_id || $part->content_location)) { |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id']; |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id']; |
| | | if ($part->content_id) |
| | | $cid_map['cid:'.$part->content_id] = $url; |
| | | else |
| | |
| | | if (($part->content_id || $part->content_location) && $part->filename) { |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) { |
| | | $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id']; |
| | | $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$_SESSION['compose']['id']; |
| | | if ($part->content_id) |
| | | $cid_map['cid:'.$part->content_id] = $url; |
| | | else |
| | |
| | | } |
| | | |
| | | $attachment = array( |
| | | 'group' => $_SESSION['compose']['id'], |
| | | 'name' => $part->filename ? $part->filename : 'Part_'.$pid.'.'.$part->ctype_secondary, |
| | | 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, |
| | | 'content_id' => $part->content_id, |
| | |
| | | $data = file_get_contents($path); |
| | | |
| | | $attachment = array( |
| | | 'group' => $_SESSION['compose']['id'], |
| | | 'name' => rcmail_basename($path), |
| | | 'mimetype' => $mimetype ? $mimetype : rc_mime_content_type($path, $name), |
| | | 'data' => $data, |
| | |
| | | $max_postsize = parse_bytes(ini_get('post_max_size')); |
| | | if ($max_postsize && $max_postsize < $max_filesize) |
| | | $max_filesize = $max_postsize; |
| | | |
| | | $OUTPUT->set_env('max_filesize', $max_filesize); |
| | | $max_filesize = show_bytes($max_filesize); |
| | | |
| | | $button = new html_inputfield(array('type' => 'button')); |
| | |
| | | { |
| | | $attrib['type'] = 'file'; |
| | | $attrib['name'] = '_attachments[]'; |
| | | $attrib['multiple'] = 'multiple'; |
| | | |
| | | $field = new html_inputfield($attrib); |
| | | return $field->show(); |
| | | } |
| | |
| | | { |
| | | $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $RCMAIL->task)); |
| | | $hiddenfields->add(array('name' => '_action', 'value' => 'send')); |
| | | $hiddenfields->add(array('name' => '_id', 'value' => $_SESSION['compose']['id'])); |
| | | |
| | | $form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : ''; |
| | | $form_start .= $hiddenfields->show(); |