Added Flag/Unflag buttons. I have been up for 2 days straight. Please check for...
[squirrelmail.git] / functions / mailbox_display.php
index 6912f4c550fde705fb21534bf1c1bba32b042386..00b4679a8649b336ec716fe32e350c8b9dbbce81 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * mailbox_display.php
  *
- * Copyright (c) 1999-2003 The SquirrelMail Project Team
+ * Copyright (c) 1999-2004 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
@@ -58,7 +58,9 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
            $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 */
+           $show_recipient_instead,    /* show recipient name instead of default identity */
+           $use_icons,            /* indicates to use icons or text markers */
+           $icon_theme;           /* icons theming */
 
     $color_string = $color[4];
 
@@ -274,41 +276,102 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
                 echo html_tag( 'td', $td_str, 'left', $hlt_color );
                 break;
             case 5: /* flags */
-                $stuff = false;
-                $td_str = "<b><small>";
 
-                if (isset($msg['FLAG_ANSWERED']) && $msg['FLAG_ANSWERED'] == true) {
-                    $td_str .= _("A");
-                    $stuff = true;
-                }
-                if ($msg['TYPE0'] == 'multipart') {
-                    $td_str .= '+';
-                    $stuff = true;
+                // icon message markers
+                //
+                if ($use_icons && $icon_theme != 'none') {
+                    $td_str = "<b><small>";
+                    if (isset($msg['FLAG_FLAGGED']) && $msg['FLAG_FLAGGED'] == true) {
+                        $td_str .= _('<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/flagged.gif" border="0" height="10" width="10"> ');
+                    }
+                    if ($default_use_priority) {
+                        if ( ($msg['PRIORITY'] == 1) || ($msg['PRIORITY'] == 2) ) {
+                            $td_str .= '<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/prio_high.gif" border="0" height="10" width="5"> ';
+                        }
+                        else if ($msg['PRIORITY'] == 5) {
+                            $td_str .= '<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/prio_low.gif" border="0" height="10" width="5"> ';
+                        }
+                        else
+                        {
+                            $td_str .= '<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/transparent.gif" border="0" width="5"> ';
+                        }
+                    }
+                    if ($msg['TYPE0'] == 'multipart') {
+                        $td_str .= '<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/attach.gif" border="0" height="10" width="6">';
+                    }
+                    else
+                    {
+                        $td_str .= '<IMG SRC="' . SM_PATH . 'images/themes/' . $icon_theme . '/transparent.gif" border="0" width="6">';
+                    }
+
+                    $msg_icon = '';
+                    if (!isset($msg['FLAG_SEEN']) || ($msg['FLAG_SEEN']) == false)
+                    {
+                        $msg_alt = '(' . _("New") . ')';
+                        $msg_title = '(' . _("New") . ')';
+                        $msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_new';
+                    }
+                    else
+                    {
+                        $msg_alt = '(' . _("Read") . ')';
+                        $msg_title = '(' . _("Read") . ')';
+                        $msg_icon .= SM_PATH . 'images/themes/' . $icon_theme . '/msg_read';
+                    }
+                    if (isset($msg['FLAG_DELETED']) && ($msg['FLAG_DELETED']) == true)
+                    {
+                        $msg_icon .= '_deleted';
+                    }
+                    if (isset($msg['FLAG_ANSWERED']) && ($msg['FLAG_ANSWERED']) == true)
+                    {
+                        $msg_icon .= '_reply';
+                    }
+                    $td_str .= '<IMG SRC="' . $msg_icon . '.gif" border="0" alt="'. $msg_alt . '" title="' . $msg_title . '" height="12" width="18" >';
+                    $td_str .= '</small></b>';
+                    echo html_tag( 'td',
+                                   $td_str,
+                                   'right',
+                                   $hlt_color,
+                                   'nowrap' );
                 }
-                if ($default_use_priority) {
-                    if ( ($msg['PRIORITY'] == 1) || ($msg['PRIORITY'] == 2) ) {
-                        $td_str .= "<font color=\"$color[1]\">!</font>";
+
+
+                // plain text message markers
+                //
+                else {
+                    $stuff = false;
+                    $td_str = "<b><small>";
+                    if (isset($msg['FLAG_ANSWERED']) && $msg['FLAG_ANSWERED'] == true) {
+                        $td_str .= _("A");
                         $stuff = true;
                     }
-                    if ($msg['PRIORITY'] == 5) {
-                        $td_str .= "<font color=\"$color[8]\">?</font>";
+                    if ($msg['TYPE0'] == 'multipart') {
+                        $td_str .= '+';
                         $stuff = true;
                     }
+                    if ($default_use_priority) {
+                        if ( ($msg['PRIORITY'] == 1) || ($msg['PRIORITY'] == 2) ) {
+                            $td_str .= "<font color=\"$color[1]\">!</font>";
+                            $stuff = true;
+                        }
+                        if ($msg['PRIORITY'] == 5) {
+                            $td_str .= "<font color=\"$color[8]\">?</font>";
+                            $stuff = true;
+                        }
+                    }
+                    if (isset($msg['FLAG_DELETED']) && $msg['FLAG_DELETED'] == true) {
+                        $td_str .= "<font color=\"$color[1]\">D</font>";
+                        $stuff = true;
+                    }
+                    if (!$stuff) {
+                        $td_str .= '&nbsp;';
+                    }
+                    $td_str .= '</small></b>';
+                    echo html_tag( 'td',
+                                   $td_str,
+                                   'center',
+                                   $hlt_color,
+                                   'nowrap' );
                 }
-                if (isset($msg['FLAG_DELETED']) && $msg['FLAG_DELETED'] == true) {
-                    $td_str .= "<font color=\"$color[1]\">D</font>";
-                    $stuff = true;
-                }
-                if (!$stuff) {
-                    $td_str .= '&nbsp;';
-                }
-                do_hook("msg_envelope");
-                $td_str .= '</small></b>';
-                echo html_tag( 'td',
-                               $td_str,
-                               'center',
-                               $hlt_color,
-                               'nowrap' );
                 break;
             case 6: /* size */
                 echo html_tag( 'td',
@@ -467,8 +530,7 @@ function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
            sqsession_unregister('msgs');       }
         switch ($mode) {
             case 'thread':
-                $id   = get_thread_sort($imapConnection);
-                $msgs = getServerMessages($imapConnection, $start_msg, $show_num, $num_msgs, $id);
+                $msgs = getThreadMessages($imapConnection, $start_msg, $show_num, $num_msgs);
                 if ($msgs === false) {
                     echo '<b><small><center><font color=red>' .
                          _("Thread sorting is not supported by your IMAP server.<br>Please report this to the system administrator.").
@@ -481,8 +543,8 @@ function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
                 }
                 break;
             case 'serversort':
-                $id   = sqimap_get_sort_order($imapConnection, $sort, $mbxresponse);
-                $msgs = getServerMessages($imapConnection, $start_msg, $show_num, $num_msgs, $id);
+                $msgs = getServerSortMessages($imapConnection, $start_msg, $show_num,
+                                              $num_msgs, $sort, $mbxresponse);
                 if ($msgs === false) {
                     echo '<b><small><center><font color=red>' .
                          _( "Server-side sorting is not supported by your IMAP server.<br>Please report this to the system administrator.").
@@ -523,7 +585,7 @@ function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
 <table border="0" width="100%" cellpadding="0" cellspacing="0">
   <tr>
     <td>
-      <?php mail_message_listing_beginning($imapConnection, $mailbox, $sort, 
+      <?php mail_message_listing_beginning($imapConnection, $mbxresponse, $mailbox, $sort, 
                                            $msg_cnt_str, $paginator_str, $start_msg); ?>
     </td>
   </tr>
@@ -537,7 +599,7 @@ function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
               <tr>
                 <td>
                   <?php 
-                    printHeader($mailbox, $sort, $color, !$thread_sort_messages, $start_msg);
+                    printHeader($mailbox, $srt, $color, !$thread_sort_messages, $start_msg);
                     displayMessageArray($imapConnection, $num_msgs, $start_msg, 
                                                $msort, $mailbox, $sort, $color, $show_num,0,0);
                   ?>
@@ -691,6 +753,7 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
  * you need to do a "</table></table>";
  *
  * $moveURL is the URL to submit the delete/move form to
+ * $mbxresponse is the array with the results of SELECT against the current mailbox 
  * $mailbox is the current mailbox
  * $sort is the current sorting method (-1 for no sorting available [searches])
  * $Message is a message that is centered on top of the list
@@ -698,11 +761,12 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
  */
 
 function mail_message_listing_beginning ($imapConnection,
+                                         $mbxresponse,
                                          $mailbox = '', $sort = -1,
                                          $msg_cnt_str = '',
                                          $paginator = '&nbsp;',
                                          $start_msg = 1) {
-    global $color, $auto_expunge, $base_uri,
+    global $color, $auto_expunge, $base_uri, $show_flag_buttons,
            $allow_server_sort, $server_sort_order,
            $PHP_SELF, $allow_thread_sort, $thread_sort_messages;
 
@@ -760,6 +824,15 @@ function mail_message_listing_beginning ($imapConnection,
               <tr>
                 <td align="left">
                   <small><?php
+                    
+                    // display flag buttons only if supported
+                    if ($show_flag_buttons 
+                        && strpos($mbxresponse['PERMANENTFLAGS'], '\Flagged') !== FALSE) {
+                        echo getButton('SUBMIT', 'markFlagged',_("Flag"));
+                        echo '&nbsp;';
+                        echo getButton('SUBMIT', 'markUnflagged',_("Unflag"));
+                        echo '&nbsp;';
+                    }
                     echo getButton('SUBMIT', 'markRead',_("Read"));
                     echo '&nbsp;';
                     echo getButton('SUBMIT', 'markUnread',_("Unread"));
@@ -905,8 +978,9 @@ function printHeader($mailbox, $sort, $color, $showsort=true, $start_msg=1) {
 /*
  * This function shows the sort button. Isn't this a good comment?
  */
-function ShowSortButton($sort, $mailbox, $Up, $Down ) {
+function ShowSortButton($sort, $mailbox, $Down, $Up ) {
     global $PHP_SELF;
+
     /* Figure out which image we want to use. */
     if ($sort != $Up && $sort != $Down) {
         $img = 'sort_none.png';
@@ -1198,7 +1272,7 @@ function get_paginator_str($box, $start_msg, $end_msg, $num_msgs,
     } else if ($PG_SHOWNUM == 999999) {
         $pg_str = "<A HREF=\"right_main.php?PG_SHOWALL=0"
                 . "&amp;use_mailbox_cache=$use&amp;startMessage=1&amp;mailbox=$box\" "
-                . "TARGET=\"right\">" ._("Paginate") . '</A>';
+                . ">" ._("Paginate") . '</A>';
     }
 
     /* Put all the pieces of the paginator string together. */
@@ -1217,7 +1291,7 @@ function get_paginator_str($box, $start_msg, $end_msg, $num_msgs,
       /* Compute the 'show all' string. */
       $all_str = "<A HREF=\"right_main.php?PG_SHOWALL=1"
                  . "&amp;use_mailbox_cache=$use&amp;startMessage=1&amp;mailbox=$box\" "
-                 . "TARGET=\"right\">" . _("Show All") . '</A>'; 
+                 . ">" . _("Show All") . '</A>'; 
     }
 
     $result .= ($pg_str  != '' ? $spc . '['.$spc.$pg_str.']' .  $spc : '');