/**
* mailbox_display.php
*
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* This contains functions that display mailbox information, such as the
$senderName = sqimap_find_displayable_name($msg['FROM']);
}
- $subject = processSubject($msg['SUBJECT']);
+ $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
* AAAAH! Make my eyes stop bleeding!
* Who wrote this?!
*/
- if (sizeof($message_highlight_list)){
+ if (is_array($message_highlight_list) && count($message_highlight_list)){
foreach ($message_highlight_list as $message_highlight_list_part) {
if (trim($message_highlight_list_part['value']) != '') {
$high_val = strtolower($message_highlight_list_part['value']);
if (!isset($hlt_color)) {
$hlt_color = $color_string;
}
- $checked = ($checkall == 1) ? true : false;
+ $checked = ($checkall == 1) ? ' CHECKED' : '';
$col = 0;
if (sizeof($index_order)) {
foreach ($index_order as $index_order_part) {
break;
case 2: /* from */
echo html_tag( 'td',
- $italic . $bold . $flag . $fontstr . $senderName .
+ $italic . $bold . $flag . $fontstr . htmlentities($senderName) .
$fontstr_end . $flag_end . $bold_end . $italic_end,
'left',
$hlt_color );
case 4: /* subject */
$td_str = $bold;
if ($thread_sort_messages == 1) {
- if (isset($indent_array[$msg["ID"]])) {
+ if (isset($indent_array[$msg['ID']])) {
$td_str .= str_repeat(" ",$indent_array[$msg['ID']]);
}
}
$td_str .= '<a href="read_body.php?mailbox='.$urlMailbox
. '&passed_id='. $msg["ID"]
. '&startMessage='.$start_msg.$searchstr.'"';
- do_hook("subject_link");
+ $td_str .= ' ' .concat_hook_function('subject_link');
if ($subject != $msg['SUBJECT']) {
$title = get_html_translation_table(HTML_SPECIALCHARS);
$title = array_flip($title);
* 4 = Subject (up)
* 5 = Subject (dn)
*/
+
if (($sort == 0) || ($sort == 1)) {
- $msort = array_cleave ($msgs, 'TIME_STAMP');
+ foreach ($msgs as $item) {
+ $msort[] = $item['TIME_STAMP'];
+ }
} elseif (($sort == 2) || ($sort == 3)) {
- $msort = array_cleave ($msgs, 'FROM-SORT');
+ foreach ($msgs as $item) {
+ $msort[] = $item['FROM-SORT'];
+ }
} elseif (($sort == 4) || ($sort == 5)) {
- $msort = array_cleave ($msgs, 'SUBJECT-SORT');
+ foreach ($msgs as $item) {
+ $msort[] = $item['SUBJECT-SORT'];
+ }
} else {
$msort = $msgs;
}
}
function fillMessageArray($imapConnection, $id, $count) {
- $msgs_list = sqimap_get_small_header_list($imapConnection, $id);
- $messages = array();
- if (sizeof($msgs_list)) {
- foreach ($msgs_list as $hdr) {
- $unique_id[] = $hdr->uid;
- $from[] = $hdr->from;
- $date[] = $hdr->date;
- $subject[] = $hdr->subject;
- $to[] = $hdr->to;
- $priority[] = $hdr->priority;
- $cc[] = $hdr->cc;
- $size[] = $hdr->size;
- $type[] = $hdr->type0;
- $flag_deleted[] = $hdr->flag_deleted;
- $flag_answered[] = $hdr->flag_answered;
- $flag_seen[] = $hdr->flag_seen;
- $flag_flagged[] = $hdr->flag_flagged;
- }
- }
-
- for($j = 0; $j < $count; ++$j) {
- if (isset($date[$j])) {
- $date[$j] = str_replace(' ', ' ', $date[$j]);
- $tmpdate = explode(' ', trim($date[$j]));
- } else {
- $tmpdate = $date = array('', '', '', '', '', '');
- }
- $messages[$j]['TIME_STAMP'] = getTimeStamp($tmpdate);
- $messages[$j]['DATE_STRING'] =
- getDateString($messages[$j]['TIME_STAMP']);
- $messages[$j]['ID'] = $unique_id[$j];
- $messages[$j]['FROM'] = decodeHeader($from[$j]);
- $messages[$j]['FROM-SORT'] =
- strtolower(sqimap_find_displayable_name(decodeHeader($from[$j])));
- $messages[$j]['SUBJECT'] = decodeHeader($subject[$j]);
- $messages[$j]['SUBJECT-SORT'] = strtolower(decodeHeader($subject[$j]));
- $messages[$j]['TO'] = decodeHeader($to[$j]);
- $messages[$j]['PRIORITY'] = $priority[$j];
- $messages[$j]['CC'] = $cc[$j];
- $messages[$j]['SIZE'] = $size[$j];
- $messages[$j]['TYPE0'] = $type[$j];
- $messages[$j]['FLAG_DELETED'] = $flag_deleted[$j];
- $messages[$j]['FLAG_ANSWERED'] = $flag_answered[$j];
- $messages[$j]['FLAG_SEEN'] = $flag_seen[$j];
- $messages[$j]['FLAG_FLAGGED'] = $flag_flagged[$j];
-
- /*
- * fix SUBJECT-SORT to remove Re:
- * vedr|sv (Danish)
- * re|aw (English)
- *
- * TODO: i18n should be incorporated here. E.g. we catch the ones
- * we know about, but also define in i18n what the localized
- * "Re: " is for this or that locale.
- */
- if (preg_match("/^(vedr|sv|re|aw):\s*(.*)$/si",
- $messages[$j]['SUBJECT-SORT'], $matches)){
- $messages[$j]['SUBJECT-SORT'] = $matches[2];
- }
- }
- return $messages;
+ return sqimap_get_small_header_list($imapConnection, $id);
}
function displayMessageArray($imapConnection, $num_msgs, $start_msg,
$msort, $mailbox, $sort, $color,
$show_num, $where=0, $what=0) {
- global $imapServerAddress, $use_mailbox_cache,
- $index_order, $checkall,
+ global $imapServerAddress, $use_mailbox_cache, $index_order,
$indent_array, $thread_sort_messages, $allow_server_sort,
$server_sort_order, $PHP_SELF;
$urlMailbox = urlencode($mailbox);
/* get indent level for subject display */
- if ($thread_sort_messages == 1 ) {
+ if ($thread_sort_messages == 1 && $num_msgs) {
$indent_array = get_parent_level($imapConnection);
}
/* messages display */
- if ($num_msgs == 0) {
+ if (!$num_msgs) {
/* if there's no messages in this folder */
echo html_tag( 'tr',
html_tag( 'td',
if (!isset($msg)) {
$msg = '';
}
- $moveURL = "move_messages.php?msg=$msg&mailbox=$urlMailbox"
- . "&startMessage=$start_msg";
+ $moveFields = '<input type="hidden" name="msg" value="'.htmlspecialchars($msg).'">' .
+ '<input type="hidden" name="mailbox" value="'.htmlspecialchars($mailbox).'">' .
+ '<input type="hidden" name="startMessage" value="'.htmlspecialchars($start_msg).'">';
+
+// $moveURL = "move_messages.php?msg=$msg&mailbox=$urlMailbox"
+// . "&startMessage=$start_msg";
/*
* This is the beginning of the message list table.
* It wraps around all messages
*/
- echo "<FORM name=\"messageList\" method=post action=\"$moveURL\">\n"
+ echo '<form name="messageList" method="post" action="move_messages.php">' ."\n"
+ . $moveFields
. html_tag( 'table' ,
html_tag( 'tr',
html_tag( 'td' ,
echo getButton('SUBMIT', 'markRead',_("Read"));
echo getButton('SUBMIT', 'markUnread',_("Unread"));
- echo getButton('SUBMIT', 'delete',_("Delete")) ." \n";
+ echo getButton('SUBMIT', 'delete',_("Delete")) ." \n";
if (!strpos($php_self,'mailbox')) {
$location = $php_self.'?mailbox=INBOX&startMessage=1';
} else {
function printHeader($mailbox, $sort, $color, $showsort=true) {
global $index_order;
echo html_tag( 'tr' ,'' , 'center', $color[5] );
- for ($i = 1; $i <= count($index_order); $i++) {
- switch ($index_order[$i]) {
+
+ /* calculate the width of the subject column based on the
+ * widths of the other columns */
+ $widths = array(1=>1,2=>25,3=>5,4=>0,5=>1,6=>5);
+ $subjectwidth = 100;
+ foreach($index_order as $item) {
+ $subjectwidth -= $widths[$item];
+ }
+
+ foreach ($index_order as $item) {
+ switch ($item) {
case 1: /* checkbox */
case 5: /* flags */
echo html_tag( 'td' ,' ' , '', '', 'width="1%"' );
echo "</td>\n";
break;
case 4: /* subject */
- echo html_tag( 'td' ,'' , 'left', '', '' )
+ echo html_tag( 'td' ,'' , 'left', '', 'width="'.$subjectwidth.'%"' )
. '<b>' . _("Subject") . '</b>';
if ($showsort) {
ShowSortButton($sort, $mailbox, 4, 5);
return ($result);
}
-function processSubject($subject) {
+function processSubject($subject, $threadlevel = 0) {
global $languages, $squirrelmail_language;
/* Shouldn't ever happen -- caught too many times in the IMAP functions */
if ($subject == '')
return _("(no subject)");
- if (strlen($subject) <= 55)
+ $trim_at = 55;
+
+ /* if this is threaded, substract two chars per indentlevel */
+ if($threadlevel > 0 && $threadlevel <= 10)
+ $trim_at -= (2*$threadlevel);
+
+ if (strlen($subject) <= $trim_at)
return $subject;
$ent_strlen = strlen($subject);
- $trim_val=50;
- $ent_offset=0;
+ $trim_val = $trim_at - 5;
+ $ent_offset = 0;
/*
* see if this is entities-encoded string
* If so, Iterate through the whole string, find out
$ent_offset = $ent_loc_end+1;
}
- if ($ent_strlen <= 55){
+ if ($ent_strlen <= $trim_at){
return $subject;
}
}
function handleAsSent($mailbox) {
- global $sent_folder, $draft_folder, $handleAsSent_result;
-
+ global $handleAsSent_result;
+
/* First check if this is the sent or draft folder. */
- $handleAsSent_result = (($mailbox == $sent_folder)
- || ($mailbox == $draft_folder));
+ $handleAsSent_result = isSentMailbox($mailbox) || isDraftMailbox($mailbox);
/* Then check the result of the handleAsSent hook. */
do_hook('check_handleAsSent_result', $mailbox);
/* And return the result. */
- return ($handleAsSent_result);
+ return $handleAsSent_result;
}
?>