split up in functions, fix for uid_support, fix for search
[squirrelmail.git] / functions / mailbox_display.php
index a98d9d4..c7d5bc6 100644 (file)
@@ -14,6 +14,7 @@
 
 require_once('../functions/strings.php');
 require_once('../functions/html.php');
+require_once('../class/html.class');
 require_once('../functions/imap_utf7_decode_local.php');
 
 /* Default value for page_selector_max. */
@@ -71,6 +72,7 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort,
     }
     $urlMailbox = urlencode($mailbox);
     $subject = processSubject($msg['SUBJECT']);
+
     echo html_tag( 'tr' ) . "\n";
 
     if (isset($msg['FLAG_FLAGGED']) && ($msg['FLAG_FLAGGED'] == true)) {
@@ -142,7 +144,8 @@ function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort,
     }
 
     $checked = ($checkall == 1) ? ' checked' : '';
-
+    
+    
     if (sizeof($index_order)){
         foreach ($index_order as $index_order_part) {
             switch ($index_order_part) {
@@ -425,6 +428,7 @@ function calc_msort($msgs, $sort, $num_msgs, $use_cache) {
 
 function fillMessageArray($imapConnection,$id,$issent,$count) {
    $msgs_list = sqimap_get_small_header_list($imapConnection, $id, $issent);
+   $messages = array();
    if (sizeof($msgs_list)){
       foreach ($msgs_list as $hdr) {
          $unique_id[] = $hdr->uid;
@@ -452,25 +456,24 @@ function fillMessageArray($imapConnection,$id,$issent,$count) {
       } else {
        $tmpdate = $date = array('', '', '', '', '', '');
       }
-      $i = $unique_id[$j];
-      $messages[$i]['TIME_STAMP'] = getTimeStamp($tmpdate);
-      $messages[$i]['DATE_STRING'] = 
+      $messages[$j]['TIME_STAMP'] = getTimeStamp($tmpdate);
+      $messages[$j]['DATE_STRING'] = 
        getDateString($messages[$i]['TIME_STAMP']);
-      $messages[$i]['ID'] = $i;
-      $messages[$i]['FROM'] = decodeHeader($from[$j]);
-      $messages[$i]['FROM-SORT'] = 
+      $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[$i]['SUBJECT'] = decodeHeader($subject[$j]);
-      $messages[$i]['SUBJECT-SORT'] = strtolower(decodeHeader($subject[$j]));
-      $messages[$i]['TO'] = decodeHeader($to[$j]);
-      $messages[$i]['PRIORITY'] = $priority[$j];
-      $messages[$i]['CC'] = $cc[$j];
-      $messages[$i]['SIZE'] = $size[$j];
-      $messages[$i]['TYPE0'] = $type[$j];
-      $messages[$i]['FLAG_DELETED'] = $flag_deleted[$j];
-      $messages[$i]['FLAG_ANSWERED'] = $flag_answered[$j];
-      $messages[$i]['FLAG_SEEN'] = $flag_seen[$j];
-      $messages[$i]['FLAG_FLAGGED'] = $flag_flagged[$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];
 
       
       /*
@@ -483,8 +486,8 @@ function fillMessageArray($imapConnection,$id,$issent,$count) {
        * "Re: " is for this or that locale.
        */
        if (preg_match("/^(vedr|sv|re|aw):\s*(.*)$/si", 
-                    $messages[$i]['SUBJECT-SORT'], $matches)){
-          $messages[$i]['SUBJECT-SORT'] = $matches[2];
+                    $messages[$j]['SUBJECT-SORT'], $matches)){
+          $messages[$j]['SUBJECT-SORT'] = $matches[2];
        }
        $j++;
   }
@@ -498,7 +501,8 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
   global $folder_prefix, $sent_folder, 
     $imapServerAddress, $data_dir, $username, $use_mailbox_cache, 
     $index_order, $real_endMessage, $real_startMessage, $checkall, 
-    $indent_array, $thread_sort_messages, $allow_server_sort, $server_sort_order;
+    $indent_array, $thread_sort_messages, $allow_server_sort, 
+    $server_sort_order, $PHP_SELF;
 
   /* If cache isn't already set, do it now. */
   if (!session_is_registered('msgs')) {
@@ -525,9 +529,15 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
 
   do_hook('mailbox_index_before');
 
-  $msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
-  $paginator_str = get_paginator_str($urlMailbox, $start_msg, $end_msg, 
+  if (preg_match('/.+search\.php.*/',$PHP_SELF,$regs)) {
+     $paginator_str = get_selectall_link($start_msg, $sort);
+  } else {     
+     $paginator_str = get_paginator_str($urlMailbox, $start_msg, $end_msg, 
                                     $num_msgs, $show_num, $sort);
+  }
+
+  
+  $msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
 
   if (!isset($msg)) {
     $msg = '';
@@ -539,10 +549,13 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
   }
   $fstring = "move_messages.php?msg=$msg&mailbox=$urlMailbox"
     . "&startMessage=$start_msg";
-  mail_message_listing_beginning($imapConnection, $fstring,
-                                $mailbox, $sort, $msg_cnt_str, 
-                                $paginator_str, $start_msg);
+
+  /* messages display header */    
+  if ($num_msgs) {    
+     mail_message_listing_beginning($imapConnection, $fstring,
+                                   $mailbox, $sort, $msg_cnt_str, 
+                                   $paginator_str, $start_msg);
+  }
   $groupNum = $start_msg % ($show_num - 1);
   $real_startMessage = $start_msg;
   if ($sort == 6) {
@@ -561,6 +574,9 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
    * ($t is used for the checkbox number)
    */
   $t = 0;
+
+  /* messages display */
+  echo  html_tag( 'table' ,'' , '', '', 'border="0" width="100%" cellpadding="1"  cellspacing="0"' );
   if ($num_msgs == 0) {
     /* if there's no messages in this folder */
         echo html_tag( 'tr',
@@ -605,9 +621,11 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
       next($msort);
     } while ($i && $i < $endVar);
   }
-  
   echo '</table>';
 
+
+  /* messages display footer */
+  if ($num_msgs) {
     echo html_tag( 'table',
             html_tag( 'tr',
                 html_tag( 'td',
@@ -621,11 +639,11 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
             , '', $color[4] )
         , '', $color[9], 'width="100%" cellpadding="1"  cellspacing="1"' );
 
-
+  }
   /* End of message-list table */
   
   do_hook('mailbox_index_after');
-  echo "</TABLE></FORM>\n";
+  echo "</FORM>\n";
 }
 
 /*
@@ -751,9 +769,11 @@ function mail_message_listing_beginning ($imapConnection, $moveURL,
   echo "</TABLE>\n";
 
     echo "</table>\n";
+
     do_hook('mailbox_form_before');
+
     echo '</td></tr>'
-    . html_tag( 'tr' )
+    .  html_tag( 'tr' )
     . html_tag( 'td' ,'' , '', $color[0], '' );
     if ($GLOBALS['alt_index_colors']){
         $cellspacing =  '0';
@@ -770,7 +790,32 @@ function mail_message_listing_beginning ($imapConnection, $moveURL,
     if ($allow_server_sort == TRUE) {
         $sort = $server_sort_order;
     }
+
+    $showsort = false;
+    if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
+       $showsort = true;
+    }
+    /* quick hack to support search.php */
+    if (preg_match('/.+search\.php.*/',$source_url, $regs)) {
+       $showsort = false;
+    }
+    
     /* Print the headers. */
+    printHeader($mailbox, $sort, $showsort);
+
+    /* if using server-sorting,
+    * send sort back to 6
+    */
+    if ($allow_server_sort == TRUE) {
+        $sort = 6;
+    }
+    echo "</tr>\n";
+
+}
+
+function printHeader($mailbox,$sort, $showsort=true) {
+  global $index_order;
+
     for ($i=1; $i <= count($index_order); $i++) {
         switch ($index_order[$i]) {
         case 1: /* checkbox */
@@ -785,7 +830,7 @@ function mail_message_listing_beginning ($imapConnection, $moveURL,
                 echo html_tag( 'td' ,'' , 'left', '', 'width="25%"' )
                 . '<b>' . _("From") . '</b>';
             }
-            if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
+            if ($showsort) {
                 ShowSortButton($sort, $mailbox, 2, 3);
             }
             echo "</td>\n";
@@ -793,15 +838,15 @@ function mail_message_listing_beginning ($imapConnection, $moveURL,
         case 3: /* date */
             echo html_tag( 'td' ,'' , 'left', '', 'width="5%" nowrap' )
             . '<b>' . _("Date") . '</b>';
-            if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
+            if ($showsort) {
                 ShowSortButton($sort, $mailbox, 0, 1);
             }
             echo "</td>\n";
             break;
-            case 4: /* subject */
+        case 4: /* subject */
             echo html_tag( 'td' ,'' , 'left', '', '' )
             . '<b>' . _("Subject") . '</b>';
-            if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
+            if ($showsort) {
                 ShowSortButton($sort, $mailbox, 4, 5);
             }
             echo "</td>\n";
@@ -811,13 +856,6 @@ function mail_message_listing_beginning ($imapConnection, $moveURL,
             break;
         }
     }
-    /* if using server-sorting,
-    * send sort back to 6
-    */
-    if ($allow_server_sort == TRUE) {
-        $sort = 6;
-    }
-    echo "</tr>\n";
 
 }