| | |
| | | if (!$OUTPUT->ajax_call) |
| | | $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash', |
| | | 'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage', |
| | | 'copy', 'move', 'quota'); |
| | | 'copy', 'move', 'quota', 'replyall', 'replylist', 'importwait'); |
| | | |
| | | $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true); |
| | | $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle); |
| | | |
| | | $OUTPUT->set_pagetitle($pagetitle); |
| | | } |
| | | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | | 'mailboxlist' => 'rcmail_mailbox_list', |
| | | 'messages' => 'rcmail_message_list', |
| | | 'messagecountdisplay' => 'rcmail_messagecount_display', |
| | | 'quotadisplay' => 'rcmail_quota_display', |
| | | 'mailboxname' => 'rcmail_mailbox_name_display', |
| | | 'messageheaders' => 'rcmail_message_headers', |
| | | 'messagefullheaders' => 'rcmail_message_full_headers', |
| | | 'messagebody' => 'rcmail_message_body', |
| | | 'messagecontentframe' => 'rcmail_messagecontent_frame', |
| | | 'messageimportform' => 'rcmail_message_import_form', |
| | | 'searchfilter' => 'rcmail_search_filter', |
| | | 'searchform' => array($OUTPUT, 'search_form'), |
| | | )); |
| | | |
| | | // register action aliases |
| | | $RCMAIL->register_action_map(array( |
| | | 'refresh' => 'check_recent.inc', |
| | | 'preview' => 'show.inc', |
| | | 'print' => 'show.inc', |
| | | 'move' => 'move_del.inc', |
| | | 'delete' => 'move_del.inc', |
| | | 'send' => 'sendmail.inc', |
| | | 'expunge' => 'folders.inc', |
| | | 'purge' => 'folders.inc', |
| | | 'remove-attachment' => 'attachments.inc', |
| | | 'display-attachment' => 'attachments.inc', |
| | | 'upload' => 'attachments.inc', |
| | | 'group-expand' => 'autocomplete.inc', |
| | | )); |
| | | |
| | | |
| | | |
| | | /** |
| | | * Returns 'to' if current folder is configured Sent or Drafts |
| | |
| | | $message->set_safe(true); |
| | | } |
| | | } |
| | | |
| | | $RCMAIL->plugins->exec_hook('message_check_safe', array('message' => $message)); |
| | | break; |
| | | |
| | | case 2: // always |
| | |
| | | $value = $headers[$hkey]; |
| | | else if ($headers['others'][$hkey]) |
| | | $value = $headers['others'][$hkey]; |
| | | else |
| | | else if (!$attrib['valueof']) |
| | | continue; |
| | | |
| | | if (in_array($hkey, $exclude_headers)) |
| | |
| | | $name = $part['name']; |
| | | $mailto = $part['mailto']; |
| | | $string = $part['string']; |
| | | $valid = check_email($mailto, false); |
| | | |
| | | // phishing email prevention (#1488981), e.g. "valid@email.addr <phishing@email.addr>" |
| | | if (!$show_email && $name && $name != $mailto && strpos($name, '@')) { |
| | | if (!$show_email && $valid && $name && $name != $mailto && strpos($name, '@')) { |
| | | $name = ''; |
| | | } |
| | | |
| | |
| | | // for printing we display all addresses |
| | | continue; |
| | | } |
| | | else if (check_email($part['mailto'], false)) { |
| | | else if ($valid) { |
| | | if ($linked) { |
| | | $attrs = array( |
| | | 'href' => 'mailto:' . $mailto, |
| | |
| | | if ($name) |
| | | $address .= Q($name); |
| | | if ($mailto) |
| | | $address .= (strlen($address) ? ' ' : '') . sprintf('<%s>', Q($mailto)); |
| | | $address = trim($address . ' ' . Q($name ? sprintf('<%s>', $mailto) : $mailto)); |
| | | } |
| | | |
| | | $address = html::span('adr', $address); |
| | |
| | | /** |
| | | * Wrap text to a given number of characters per line |
| | | * but respect the mail quotation of replies messages (>). |
| | | * Finally add another quotation level by prpending the lines |
| | | * Finally add another quotation level by prepending the lines |
| | | * with > |
| | | * |
| | | * @param string Text to wrap |
| | | * @param int The line width |
| | | * @param int The line width |
| | | * @return string The wrapped text |
| | | */ |
| | | function rcmail_wrap_and_quote($text, $length = 72) |
| | |
| | | $line = '>' . rtrim($line); |
| | | else if (mb_strlen($line) > $max) { |
| | | $newline = ''; |
| | | foreach(explode("\n", rc_wordwrap($line, $length - 2)) as $l) { |
| | | foreach (explode("\n", rc_wordwrap($line, $length - 2)) as $l) { |
| | | if (strlen($l)) |
| | | $newline .= '> ' . $l . "\n"; |
| | | else |
| | |
| | | } |
| | | |
| | | return $info; |
| | | } |
| | | |
| | | |
| | | function rcmail_message_part_controls($attrib) |
| | | { |
| | | global $MESSAGE, $RCMAIL; |
| | | |
| | | $part = asciiwords(get_input_value('_part', RCUBE_INPUT_GPC)); |
| | | if (!is_object($MESSAGE) || !is_array($MESSAGE->parts) || !($_GET['_uid'] && $_GET['_part']) || !$MESSAGE->mime_parts[$part]) |
| | | return ''; |
| | | |
| | | $part = $MESSAGE->mime_parts[$part]; |
| | | $table = new html_table(array('cols' => 3)); |
| | | |
| | | $filename = rcmail_attachment_name($part); |
| | | |
| | | if (!empty($filename)) { |
| | | $table->add('title', Q(rcube_label('filename'))); |
| | | $table->add('header', Q($filename)); |
| | | $table->add('download-link', html::a(array('href' => './?'.str_replace('_frame=', '_download=', $_SERVER['QUERY_STRING'])), Q(rcube_label('download')))); |
| | | } |
| | | |
| | | $table->add('title', Q(rcube_label('filesize'))); |
| | | $table->add('header', Q($RCMAIL->message_part_size($part))); |
| | | |
| | | return $table->show($attrib); |
| | | } |
| | | |
| | | |
| | | function rcmail_message_part_frame($attrib) |
| | | { |
| | | global $MESSAGE; |
| | | |
| | | $part = $MESSAGE->mime_parts[asciiwords(get_input_value('_part', RCUBE_INPUT_GPC))]; |
| | | $ctype_primary = strtolower($part->ctype_primary); |
| | | |
| | | $attrib['src'] = './?' . str_replace('_frame=', ($ctype_primary=='text' ? '_embed=' : '_preload='), $_SERVER['QUERY_STRING']); |
| | | |
| | | return html::iframe($attrib); |
| | | } |
| | | |
| | | |
| | |
| | | // Try Return-Path |
| | | if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) { |
| | | foreach ($identities as $idx => $ident) { |
| | | if (strpos($return_path, str_replace('@', '=', $ident['email_ascii']).'@') !== false) { |
| | | $from_idx = $idx; |
| | | break; |
| | | $ident = str_replace('@', '=', $ident['email_ascii']) . '@'; |
| | | foreach ((array)$return_path as $path) { |
| | | if (strpos($path, $ident) !== false) { |
| | | $from_idx = $idx; |
| | | break 2; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | // application/pdf.A520491B_3BF7_494D_8855_7FAC2C6C0608 |
| | | if (preg_match('/^application\/pdf.+/', $name)) |
| | | $name = 'application/pdf'; |
| | | |
| | | // treat image/pjpeg as image/jpeg |
| | | // treat image/pjpeg (image/pjpg, image/jpg) as image/jpeg (#1489097) |
| | | else if (preg_match('/^image\/p?jpe?g$/', $name)) |
| | | $name = 'image/jpeg'; |
| | | |
| | |
| | | $RCMAIL->output->send('messageerror'); |
| | | } |
| | | |
| | | // register UI objects |
| | | $OUTPUT->add_handlers(array( |
| | | 'mailboxlist' => 'rcmail_mailbox_list', |
| | | 'messages' => 'rcmail_message_list', |
| | | 'messagecountdisplay' => 'rcmail_messagecount_display', |
| | | 'quotadisplay' => 'rcmail_quota_display', |
| | | 'mailboxname' => 'rcmail_mailbox_name_display', |
| | | 'messageheaders' => 'rcmail_message_headers', |
| | | 'messagefullheaders' => 'rcmail_message_full_headers', |
| | | 'messagebody' => 'rcmail_message_body', |
| | | 'messagecontentframe' => 'rcmail_messagecontent_frame', |
| | | 'messagepartframe' => 'rcmail_message_part_frame', |
| | | 'messagepartcontrols' => 'rcmail_message_part_controls', |
| | | 'searchfilter' => 'rcmail_search_filter', |
| | | 'searchform' => array($OUTPUT, 'search_form'), |
| | | )); |
| | | function rcmail_message_import_form($attrib = array()) |
| | | { |
| | | global $OUTPUT; |
| | | |
| | | // register action aliases |
| | | $RCMAIL->register_action_map(array( |
| | | 'refresh' => 'check_recent.inc', |
| | | 'preview' => 'show.inc', |
| | | 'print' => 'show.inc', |
| | | 'moveto' => 'move_del.inc', |
| | | 'delete' => 'move_del.inc', |
| | | 'send' => 'sendmail.inc', |
| | | 'expunge' => 'folders.inc', |
| | | 'purge' => 'folders.inc', |
| | | 'remove-attachment' => 'attachments.inc', |
| | | 'display-attachment' => 'attachments.inc', |
| | | 'upload' => 'attachments.inc', |
| | | 'group-expand' => 'autocomplete.inc', |
| | | )); |
| | | // set defaults |
| | | $attrib += array('id' => 'rcmImportform', 'buttons' => 'yes'); |
| | | |
| | | // Get filesize, enable upload progress bar |
| | | $max_filesize = rcube_upload_init(); |
| | | |
| | | $button = new html_inputfield(array('type' => 'button')); |
| | | $fileinput = new html_inputfield(array( |
| | | 'type' => 'file', |
| | | 'name' => '_file[]', |
| | | 'size' => $attrib['attachmentfieldsize'], |
| | | 'multiple' => 'multiple', |
| | | 'accept' => ".eml, .mbox, message/rfc822, text/*", |
| | | )); |
| | | |
| | | $out = html::div($attrib, |
| | | $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'method' => 'post', 'enctype' => 'multipart/form-data'), |
| | | html::tag('input', array('type' => 'hidden', 'name' => '_unlock', 'value' => '')) . |
| | | html::div(null, $fileinput->show()) . |
| | | html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . |
| | | (get_boolean($attrib['buttons']) ? html::div('buttons', |
| | | $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' . |
| | | $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('import-messages', this.form)")) |
| | | ) : '') |
| | | ) |
| | | ); |
| | | |
| | | $OUTPUT->add_gui_object('importform', $attrib['id'].'Frm'); |
| | | return $out; |
| | | } |