X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fmailbox_display.php;h=aad15500edb990ca36078edc489672e2a3bf5ea8;hb=176204a5766acf5d8dac2e899e431efff7c8d0a1;hp=7fb198930a59c88eb172142c4f33586690888a7a;hpb=83cdc70b8afd7cd300ff191943e412c6f46baba3;p=squirrelmail.git diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index 7fb19893..aad15500 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -16,8 +16,12 @@ require_once(SM_PATH . 'functions/strings.php'); require_once(SM_PATH . 'functions/html.php'); require_once(SM_PATH . 'class/html.class.php'); require_once(SM_PATH . 'functions/imap_mailbox.php'); +require_once(SM_PATH . 'functions/imap_messages.php'); +require_once(SM_PATH . 'functions/mime.php'); -/* Default value for page_selector_max. */ +/* Constants: + * PG_SEL_MAX: default value for page_selector_max + */ define('PG_SEL_MAX', 10); function elapsed($start) @@ -41,12 +45,16 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox, $default_use_priority, $message_highlight_list, $index_order, - $indent_array, /* indent subject by */ - $pos, /* Search postion (if any) */ + $indent_array, /* indent subject by */ + $pos, /* Search postion (if any) */ $thread_sort_messages, /* thread sorting on/off */ - $server_sort_order, /* sort value when using server-sorting */ + $server_sort_order, /* sort value when using server-sorting */ $row_count, - $allow_server_sort; /* enable/disable server-side sorting */ + $allow_server_sort, /* enable/disable server-side sorting */ + $truncate_sender, /* number of characters for From/To field (<= 0 for unchanged) */ + $email_address, + $show_recipient_instead; /* show recipient name instead of default identity */ + $color_string = $color[4]; if ($GLOBALS['alt_index_colors']) { @@ -70,31 +78,57 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox, } $urlMailbox = urlencode($mailbox); - if (handleAsSent($mailbox)) { - $msg['FROM'] = $msg['TO']; + $bSentFolder = handleAsSent($mailbox); + if ((!$bSentFolder) && ($show_recipient_instead)) { + // If the From address is the same as $email_address, then handle as Sent + $from_array = parseAddress($msg['FROM'], 1); + if (!isset($email_address)) { + global $datadir, $username; + $email_address = getPref($datadir, $username, 'email_address'); + } + $bHandleAsSent = ((isset($from_array[0][0])) && ($from_array[0][0] == $email_address)); } - $msg['FROM'] = parseAddress($msg['FROM'],1); + else + $bHandleAsSent = $bSentFolder; + // If this is a Sent message, display To address instead of From + if ($bHandleAsSent) + $msg['FROM'] = $msg['TO']; + // Passing 1 below results in only 1 address being parsed, thus defeating the following code + $msg['FROM'] = parseAddress($msg['FROM']/*,1*/); /* * This is done in case you're looking into Sent folders, * because you can have multiple receivers. */ - $senderNames = $msg['FROM']; $senderName = ''; + $senderAddress = ''; if (sizeof($senderNames)){ foreach ($senderNames as $senderNames_part) { if ($senderName != '') { $senderName .= ', '; + $senderAddress .= ', '; } - if ($senderNames_part[1]) { - $senderName .= decodeHeader($senderNames_part[1]); + $sender_address_part = htmlspecialchars($senderNames_part[0]); + $sender_name_part = str_replace(' ',' ', decodeHeader($senderNames_part[1])); + if ($sender_name_part) { + $senderName .= $sender_name_part; + $senderAddress .= $sender_name_part . ' <' . $sender_address_part . '>'; } else { - $senderName .= htmlspecialchars($senderNames_part[0]); + $senderName .= $sender_address_part; + $senderAddress .= $sender_address_part; } } } - $senderName = str_replace(' ',' ',$senderName); + // If Sent, prefix with To: but only if not Sent folder + if ($bHandleAsSent ^ $bSentFolder) { + $senderName = _("To:") . ' ' . $senderName; + $senderAddress = _("To:") . ' ' . $senderAddress; + } + + if ($truncate_sender > 0) + $senderName = truncateWithEntities($senderName, $truncate_sender); + echo html_tag( 'tr','','','','VALIGN="top"') . "\n"; if (isset($msg['FLAG_FLAGGED']) && ($msg['FLAG_FLAGGED'] == true)) { @@ -111,7 +145,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox, $bold = ''; $bold_end = ''; } - if (handleAsSent($mailbox)) { + if ($bHandleAsSent) { $italic = ''; $italic_end = ''; } else { @@ -177,9 +211,8 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox, } $checked = ($checkall == 1) ? ' CHECKED' : ''; $col = 0; - $msg['SUBJECT'] = decodeHeader($msg['SUBJECT']); + $msg['SUBJECT'] = str_replace(' ', ' ', decodeHeader($msg['SUBJECT'])); $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]); - $subject = str_replace(' ',' ',$subject); if (sizeof($index_order)) { foreach ($index_order as $index_order_part) { switch ($index_order_part) { @@ -190,11 +223,17 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox, $hlt_color ); break; case 2: /* from */ + if ($senderAddress != $senderName) { + $senderAddress = strtr($senderAddress, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); + $title = ' title="' . str_replace('"', "''", $senderAddress) . '"'; + } + else + $title = ''; echo html_tag( 'td', $italic . $bold . $flag . $fontstr . $senderName . $fontstr_end . $flag_end . $bold_end . $italic_end, 'left', - $hlt_color ); + $hlt_color, $title ); break; case 3: /* date */ $date_string = $msg['DATE_STRING'] . ''; @@ -747,7 +786,8 @@ function mail_message_listing_beginning ($imapConnection, . "$sort" . '&start_messages=1&set_thread=' . "$set_thread" . '&mailbox=' . urlencode($mailbox) . '>' . $thread_name . ' ' - , '', '', '' ) + , '', '', '' ) . html_tag( 'td', _("Bypass Trash") . '','right','','') + , '', '', '' ); } @@ -873,8 +913,9 @@ function ShowSortButton($sort, $mailbox, $Up, $Down ) { /* Now that we have everything figured out, show the actual button. */ echo ' sort'; + . '">sort'; } function get_selectall_link($start_msg, $sort) { @@ -890,7 +931,8 @@ function get_selectall_link($start_msg, $sort) { . "\n