some more fixes to solve the vhost problem (icy cold here in the freeze)
[squirrelmail.git] / functions / mailbox_display.php
index fbf271c6e8924c61a06c90c0040774f035321055..fadc568487e4fc8cb1825da675ee38534f7affae 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * mailbox_display.php
  *
- * Copyright (c) 1999-2001 The SquirrelMail Development Team
+ * Copyright (c) 1999-2002 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
@@ -12,6 +12,8 @@
  * $Id$
  */
 
+include_once('../functions/strings.php');
+
 define('PG_SEL_MAX', 10);  /* Default value for page_selector_max. */
 
 function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start_msg, $where, $what) {
@@ -21,6 +23,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
     global $default_use_priority;
     global $message_highlight_list;
     global $index_order;
+    global $pos;            /* Search postion (if any)  */
 
     $color_string = $color[4];
     if ($GLOBALS['alt_index_colors']) {
@@ -35,7 +38,19 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
     }
     $msg = $msgs[$key];
 
-    $senderName = htmlspecialchars(sqimap_find_displayable_name($msg['FROM']));
+    /**
+     * This is done in case you're looking into Sent folders,
+     * because you can have multi receiver.
+     */
+    $sendersName = split(',', $msg['FROM']);
+    $senderName = '';
+    for ($index = 0 ; $index < count($sendersName) ; $index++) {
+        if ($senderName != '') {
+            $senderName .= ', ';
+        }
+        $senderName .= sqimap_find_displayable_name($sendersName[$index]);
+    }
+
     if( $mailbox == 'None' ) {
         // $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
         $boxes = sqimap_mailbox_list($imapConnection);
@@ -48,7 +63,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
     echo "<TR>\n";
 
     if (isset($msg['FLAG_FLAGGED']) && ($msg['FLAG_FLAGGED'] == true)) {
-        $flag = "<font color=$color[2]>";
+        $flag = "<font color=\"$color[2]\">";
         $flag_end = '</font>';
     } else {
         $flag = '';
@@ -62,7 +77,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
         $bold_end = '';
     }
 
-    if (($mailbox == $sent_folder) || ($mailbox == $draft_folder)) {
+    if (handleAsSent($mailbox)) {
         $italic = '<i>';
         $italic_end = '</i>';
     } else {
@@ -97,7 +112,10 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
     }
 
     if ($where && $what) {
-        $search_stuff = '&where='.urlencode($where).'&what='.urlencode($what);
+        if( !isset( $pos ) || $pos == '' ) {
+            $pos = '0';
+        }
+        $search_stuff = "&pos=" . urlencode( $pos ) . "&where=".urlencode($where).'&what='.urlencode($what);
     }
 
     $checked = ($checkall == 1 ?' checked' : '');
@@ -105,16 +123,16 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
     for ($i=1; $i <= count($index_order); $i++) {
         switch ($index_order[$i]) {
         case 1: /* checkbox */
-            echo "   <td bgcolor=$hlt_color align=center><input type=checkbox name=\"msg[$t]\" value=".$msg["ID"]."$checked></TD>\n";
+            echo "   <td bgcolor=\"$hlt_color\" align=center><input type=checkbox name=\"msg[$t]\" value=".$msg["ID"]."$checked></TD>\n";
             break;
         case 2: /* from */
-            echo "   <td bgcolor=$hlt_color>$italic$bold$flag$fontstr$senderName$fontstr_end$flag_end$bold_end$italic_end</td>\n";
+            echo "   <td bgcolor=\"$hlt_color\">$italic$bold$flag$fontstr$senderName$fontstr_end$flag_end$bold_end$italic_end</td>\n";
             break;
         case 3: /* date */
-            echo "   <td nowrap bgcolor=$hlt_color><center>$bold$flag$fontstr".$msg["DATE_STRING"]."$fontstr_end$flag_end$bold_end</center></td>\n";
+            echo "   <td nowrap bgcolor=\"$hlt_color\"><center>$bold$flag$fontstr".$msg["DATE_STRING"]."$fontstr_end$flag_end$bold_end</center></td>\n";
             break;
         case 4: /* subject */
-            echo "   <td bgcolor=$hlt_color>$bold";
+            echo "   <td bgcolor=\"$hlt_color\">$bold";
                 if (! isset($search_stuff)) { $search_stuff = ''; }
             echo "<a href=\"read_body.php?mailbox=$urlMailbox&passed_id=".$msg["ID"]."&startMessage=$start_msg&show_more=0$search_stuff\"";
             do_hook("subject_link");
@@ -130,7 +148,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
             break;
         case 5: /* flags */
             $stuff = false;
-            echo "   <td bgcolor=$hlt_color align=center nowrap><b><small>\n";
+            echo "   <td bgcolor=\"$hlt_color\" align=center nowrap><b><small>\n";
             if (isset($msg['FLAG_ANSWERED']) &&
                 $msg['FLAG_ANSWERED'] == true) {
                 echo "A\n";
@@ -142,11 +160,11 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
             }
             if ($default_use_priority) {
                 if (ereg('(1|2)',substr($msg['PRIORITY'],0,1))) {
-                    echo "<font color=$color[1]>!</font>\n";
+                    echo "<font color=\"$color[1]\">!</font>\n";
                     $stuff = true;
                 }
                 if (ereg('(5)',substr($msg['PRIORITY'],0,1))) {
-                    echo "<font color=$color[8]>?</font>\n";
+                    echo "<font color=\"$color[8]\">?</font>\n";
                     $stuff = true;
                 }
             }
@@ -161,7 +179,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
             echo "</small></b></td>\n";
             break;
         case 6: /* size */
-            echo "   <td bgcolor=$hlt_color>$bold$fontstr" .
+            echo "   <td bgcolor=\"$hlt_color\">$bold$fontstr" .
                  show_readable_size($msg['SIZE']) .
                  "$fontstr_end$bold_end</td>\n";
             break;
@@ -175,8 +193,8 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start
  * and shows them to the user.
  */
 function showMessagesForMailbox
-        ($imapConnection, $mailbox, $num_msgs, $start_msg,
       $sort, $color,$show_num, $use_cache) {
+($imapConnection, $mailbox, $num_msgs, $start_msg, $sort,
$color, $show_num, $use_cache) {
     global $msgs, $msort;
     global $sent_folder, $draft_folder;
     global $message_highlight_list;
@@ -188,7 +206,7 @@ function showMessagesForMailbox
     }
     sqimap_mailbox_select($imapConnection, $mailbox);
 
-    $issent = (($mailbox == $sent_folder) || ($mailbox == $draft_folder));
+    $issent = handleAsSent($mailbox);
     if (!$use_cache) {
         /* If it is sorted... */
         if ($num_msgs >= 1) {
@@ -445,11 +463,11 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg, &$msgs, $ms
     }
 
     echo '</table>'.
-        "<table bgcolor=\"$color[9]\" width=100% border=0 cellpadding=1 cellspacing=1>" .
-            "<tr BGCOLOR=\"$color[4]\">" .
-                "<table width=100% BGCOLOR=\"$color[4]\" border=0 cellpadding=1 cellspacing=0><tr><td>$paginator_str</td>".
+        "<table bgcolor=\"$color[9]\" width=\"100%\" border=0 cellpadding=1 cellspacing=1>" .
+            "<tr BGCOLOR=\"$color[4]\"><td>" .
+                "<table width=\"100%\" BGCOLOR=\"$color[4]\" border=0 cellpadding=1 cellspacing=0><tr><td>$paginator_str</td>".
                 "<td align=right>$msg_cnt_str</td></tr></table>".
-            "</tr>".
+            "</td></tr>".
         "</table>";
     /** End of message-list table */
 
@@ -478,7 +496,8 @@ function mail_message_listing_beginning
     * This is the beginning of the message list table.
     * It wraps around all messages
     */
-    echo "<TABLE WIDTH=\"100%\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"0\">\n"
+    echo "<FORM name=messageList method=post action=\"$moveURL\">\n"
+       . "<TABLE WIDTH=\"100%\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"0\">\n"
        . "<TR BGCOLOR=\"$color[0]\"><TD>"
        . "    <TABLE BGCOLOR=\"$color[4]\" width=\"100%\" CELLPADDING=\"2\" CELLSPACING=\"0\" BORDER=\"0\"><TR>\n"
        . "    <TD ALIGN=LEFT>$paginator</TD>\n"
@@ -486,18 +505,17 @@ function mail_message_listing_beginning
        . "  </TR></TABLE>\n"
        . '</TD></TR>'
        . "<TR><TD BGCOLOR=\"$color[0]\">\n"
-       . "<FORM name=messageList method=post action=\"$moveURL\">\n"
        . "<TABLE BGCOLOR=\"$color[0]\" COLS=2 BORDER=0 cellpadding=0 cellspacing=0 width=\"100%\">\n"
        . "   <TR>\n"
-       . "      <TD ALIGN=LEFT VALIGN=CENTER NOWRAP>\n"
-       . '         <SMALL>&nbsp;' . _("Move selected to:") . "</SMALL>\n"
+       . "      <TD ALIGN=LEFT VALIGN=MIDDLE NOWRAP>\n"
+       . '         <SMALL>&nbsp;' . _("Move Selected To:") . "</SMALL>\n"
        . "      </TD>\n"
        . "      <TD ALIGN=RIGHT NOWRAP>\n"
        . '         <SMALL>&nbsp;' . _("Transform Selected Messages") . ": &nbsp; </SMALL><BR>\n"
        . "      </TD>\n"
        . "   </TR>\n"
        . "   <TR>\n"
-       . "      <TD ALIGN=LEFT VALIGN=CENTER NOWRAP>\n"
+       . "      <TD ALIGN=LEFT VALIGN=MIDDLE NOWRAP>\n"
        . '         <SMALL>&nbsp;<TT><SELECT NAME="targetMailbox">';
 
     $boxes = sqimap_mailbox_list($imapConnection);
@@ -508,8 +526,8 @@ function mail_message_listing_beginning
             echo "         <OPTION VALUE=\"$box\">$box2</option>\n";
         }
     }
-    echo '         </SELECT></TT></SMALL>'.
-         "<SMALL><INPUT TYPE=SUBMIT NAME=\"moveButton\" VALUE=\"" . _("Move") . "\"></SMALL>\n".
+    echo '         </SELECT></TT>&nbsp;'.
+         "<INPUT TYPE=SUBMIT NAME=\"moveButton\" VALUE=\"" . _("Move") . "\"></SMALL>\n".
          "      </TD>\n".
          "      <TD ALIGN=RIGHT NOWRAP>&nbsp;&nbsp;&nbsp;\n";
     if (!$auto_expunge) {
@@ -525,7 +543,7 @@ function mail_message_listing_beginning
     echo '</TD></TR>'.
 
         "<TR><TD BGCOLOR=\"$color[0]\">".
-        "<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=";
+        "<TABLE WIDTH=\"100%\" BORDER=0 CELLPADDING=2 CELLSPACING=";
     if ($GLOBALS['alt_index_colors']) {
         echo "0";
     } else {
@@ -543,8 +561,7 @@ function mail_message_listing_beginning
             break;
 
         case 2: /* from */
-            if (($mailbox == $sent_folder)
-                    || ($mailbox == $draft_folder)) {
+            if (handleAsSent($mailbox)) {
                 echo '   <TD WIDTH="25%"><B>'. _("To") .'</B>';
             } else {
                 echo '   <TD WIDTH="25%"><B>'. _("From") .'</B>';
@@ -598,7 +615,8 @@ function ShowSortButton($sort, $mailbox, $Up, $Down) {
 }
 
 function get_selectall_link($start_msg, $sort) {
-    global $checkall, $PHP_SELF, $what, $where, $mailbox, $javascript_on;
+    global $checkall, $what, $where, $mailbox, $javascript_on;
+    global $PHP_SELF, $PG_SHOWNUM;
 
     if ($javascript_on) {
         $result =
@@ -612,7 +630,7 @@ function get_selectall_link($start_msg, $sort) {
             "   }\n" .
             "}\n" .
             "//-->\n" .
-            '</script><a href=# onClick="CheckAll();">' . _("Toggle All") . "</a>\n";
+            '</script><a href="#" onClick="CheckAll();">' . _("Toggle All") . "</a>\n";
     } else {
         $result .= "<a href=\"$PHP_SELF?mailbox=" . urlencode($mailbox)
                     . "&startMessage=$start_msg&sort=$sort&checkall=";
@@ -627,6 +645,10 @@ function get_selectall_link($start_msg, $sort) {
                     . '&what=' . urlencode($what);
         }
 
+        if ($PG_SHOWNUM == 999999) {
+            $result .= '&PG_SHOWNUM=999999';
+        }
+
         $result .= "\">";
 
         if (isset($checkall) && ($checkall == '1')) {
@@ -676,7 +698,7 @@ function get_paginator_link
  */
 function get_paginator_str
 ($box, $start_msg, $end_msg, $num_msgs, $show_num, $sort) {
-    global $username, $data_dir, $use_mailbox_cache, $color;
+    global $username, $data_dir, $use_mailbox_cache, $color, $PG_SHOWNUM;
 
     /* Initialize paginator string chunks. */
     $prv_str = '';
@@ -833,11 +855,15 @@ function get_paginator_str
                 $pg_str .= get_paginator_link($box, $start, $use, $pg) . $spc;
             }
         }
+    } else if ($PG_SHOWNUM == 999999) {
+        $pg_str = "<A HREF=\"right_main.php?use_mailbox_cache=$use"
+                . "&startMessage=1&mailbox=$box\" TARGET=\"right\">"
+                . _("Paginate") . '</A>' . $spc;
     }
 
     /* If necessary, compute the 'show all' string. */
     if (($prv_str != '') || ($nxt_str != '')) {
-        $all_str = "<A HREF=\"right_main.php?PG_SHOWNUM=9999"
+        $all_str = "<A HREF=\"right_main.php?PG_SHOWNUM=999999"
                  . "&use_mailbox_cache=$use&startMessage=1&mailbox=$box\" "
                  . "TARGET=\"right\">" . _("Show All") . '</A>';
     }
@@ -847,11 +873,11 @@ function get_paginator_str
 
     /* Put all the pieces of the paginator string together. */
     $result = '';
-    $result .= ($all_str != '' ? $all_str . $spc . $sep . $spc: '');
     $result .= ($prv_str != '' ? $prv_str . $spc . $sep . $spc : '');
-    $result .= ($pg_str != '' ? $pg_str . $sep . $spc : '');
-    $result .= ($nxt_str != '' ? $nxt_str : '');
-    $result .= ($result != '' ? $spc . $sep . $spc . $tgl_str: $tgl_str);
+    $result .= ($nxt_str != '' ? $nxt_str . $spc . $sep . $spc : '');
+    $result .= ($pg_str != '' ? $pg_str : '');
+    $result .= ($all_str != '' ? $sep . $spc . $all_str . $spc : '');
+    $result .= ($result != '' ? $sep . $spc . $tgl_str: $tgl_str);
 
     /* If the resulting string is blank, return a non-breaking space. */
     if ($result == '') {
@@ -891,4 +917,19 @@ function processSubject($subject) {
     return substr($subject, 0, $trim_val) . '...';
 }
 
+function handleAsSent($mailbox) {
+    global $sent_folder, $draft_folder;
+    global $handleAsSent_result;
+
+    /* First check if this is the sent or draft folder. */
+    $handleAsSent_result = (($mailbox == $sent_folder)
+                        || ($mailbox == $draft_folder));
+
+    /* Then check the result of the handleAsSent hook. */
+    do_hook('check_handleAsSent_result', $mailbox);
+
+    /* And return the result. */
+    return ($handleAsSent_result);
+}
+
 ?>