initialize $second var in order to prevent variable abuse in rg=on and fix
[squirrelmail.git] / functions / mailbox_display.php
index 62f122c0f09dd7e496794ca4450ebb034545baac..b0dae7b2371ac7d342e571b0709cf402dfd790d5 100644 (file)
@@ -1,17 +1,16 @@
 <?php
 
 /**
-* mailbox_display.php
-*
-* Copyright (c) 1999-2005 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
-* table row that has sender, date, subject, etc...
-*
-* @version $Id$
-* @package squirrelmail
-*/
+ * mailbox_display.php
+ *
+ * This contains functions that display mailbox information, such as the
+ * table row that has sender, date, subject, etc...
+ *
+ * @copyright &copy; 1999-2005 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ */
 
 /** The standard includes.. */
 require_once(SM_PATH . 'functions/strings.php');
@@ -302,6 +301,7 @@ function fetchMessageHeaders($imapConnection, &$aMailbox) {
     $iError = 0;
     $aFetchItems = $aHeaderItems = array();
     // initialize the fields we want to retrieve:
+    $aHeaderFields = array();
     foreach ($aFetchHeaders as $v) {
       switch ($v) {
         case SQM_COL_DATE:       $aHeaderFields[] = 'Date';         break;
@@ -341,7 +341,7 @@ function fetchMessageHeaders($imapConnection, &$aMailbox) {
 
         $id_slice = array_slice($aUid,$start_msg-1,$iLimit);
         /* do some funky cache checks */
-        if (isset($aMailbox['MSG_HEADERS'])) {
+        if (isset($aMailbox['MSG_HEADERS']) && is_array($aMailbox['MSG_HEADERS'])) {
             $aUidCached = array_keys($aMailbox['MSG_HEADERS']);
         } else {
             $aMailbox['MSG_HEADERS'] = array();
@@ -575,7 +575,8 @@ function prepareMessageList(&$aMailbox, $aProps) {
                     // FIXME: don't break 8bit symbols and html entities during truncation
                     if (isset($aColumnDesc[$k]['truncate']) && $aColumnDesc[$k]['truncate']) {
                         $sTmp = truncateWithEntities($value, $aColumnDesc[$k]['truncate']-$iIndent);
-                        $title = ($sTmp != $value) ? $value : '';
+                        // drop any double spaces since these will be displayed in the title
+                        $title = ($sTmp != $value) ? preg_replace('/\s{2,}/', ' ', $value) : '';
                         $value = $sTmp;
                     }
                     /* generate the link to the message */
@@ -600,6 +601,8 @@ function prepareMessageList(&$aMailbox, $aProps) {
                                          'answered'=>false,
                                          'flagged' => false,
                                          'draft' => false);
+                                         
+                    if(!is_array($value)) $value = array();                     
                     foreach ($value as $sFlag => $value) {
                         switch ($sFlag) {
                           case '\\seen'    : $aFlagColumn['seen']     = true; break;
@@ -692,14 +695,14 @@ function setUserPref($username, $pref, $value) {
 }
 
 /**
-* Execute the sorting for a mailbox
-*
-* @param  resource $imapConnection Imap connection
-* @param  array    $aMailbox (reference) Mailbox retrieved with sqm_api_mailbox_select
-* @return int      $error (reference) Error number
-* @private
-* @author Marc Groot Koerkamp
-*/
+ * Execute the sorting for a mailbox
+ *
+ * @param  resource $imapConnection Imap connection
+ * @param  array    $aMailbox (reference) Mailbox retrieved with sqm_api_mailbox_select
+ * @return int      $error (reference) Error number
+ * @private
+ * @author Marc Groot Koerkamp
+ */
 function _get_sorted_msgs_list($imapConnection,&$aMailbox) {
     $iSetIndx = (isset($aMailbox['SETINDEX'])) ? $aMailbox['SETINDEX'] : 0;
     $bDirection = !($aMailbox['SORT'] % 2);
@@ -746,13 +749,13 @@ function _get_sorted_msgs_list($imapConnection,&$aMailbox) {
 }
 
 /**
-* Does the $srt $_GET var to field mapping
-*
-* @param int $srt Field to sort on
-* @param bool $bServerSort Server sorting is true
-* @return string $sSortField Field to sort on
-* @private
-*/
+ * Does the $srt $_GET var to field mapping
+ *
+ * @param int $srt Field to sort on
+ * @param bool $bServerSort Server sorting is true
+ * @return string $sSortField Field to sort on
+ * @private
+ */
 function _getSortField($sort,$bServerSort) {
     switch($sort) {
         case SQSORT_NONE:
@@ -799,14 +802,14 @@ function _getSortField($sort,$bServerSort) {
 
 
 /**
-* This function loops through a group of messages in the mailbox
-* and shows them to the user.
-*
-* @param resource $imapConnection
-* @param array    $aMailbox associative array with mailbox related vars
-* @param array    $aProps
-* @param int      $iError error code, 0 is no error
-*/
+ * This function loops through a group of messages in the mailbox
+ * and shows them to the user.
+ *
+ * @param resource $imapConnection
+ * @param array    $aMailbox associative array with mailbox related vars
+ * @param array    $aProps
+ * @param int      $iError error code, 0 is no error
+ */
 function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) {
     global $PHP_SELF;
     global $boxes;
@@ -1039,9 +1042,9 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) {
     }
 
     /*
-    * This is the beginning of the message list table.
-    * It wraps around all messages
-    */
+     * This is the beginning of the message list table.
+     * It wraps around all messages
+     */
     $safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $aMailbox['NAME']);
     $form_name = "FormMsgs" . $safe_name;
 
@@ -1090,12 +1093,12 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) {
 
 
 /**
-* Truncates a string and take care of html encoded characters
-*
-* @param string  $s string to truncate
-* @param int $iTrimAt Trim at nn characters
-* @return string  Trimmed string
-*/
+ * Truncates a string and take care of html encoded characters
+ *
+ * @param string  $s string to truncate
+ * @param int $iTrimAt Trim at nn characters
+ * @return string  Trimmed string
+ */
 function truncateWithEntities($s, $iTrimAt) {
     global $languages, $squirrelmail_language;
 
@@ -1108,11 +1111,11 @@ function truncateWithEntities($s, $iTrimAt) {
         return call_user_func($languages[$squirrelmail_language]['XTRA_CODE'] . '_strimwidth', $s, $iTrimAt);
     } else {
         /*
-        * see if this is entities-encoded string
-        * If so, Iterate through the whole string, find out
-        * the real number of characters, and if more
-        * than $iTrimAt, substr with an updated trim value.
-        */
+         * see if this is entities-encoded string
+         * If so, Iterate through the whole string, find out
+         * the real number of characters, and if more
+         * than $iTrimAt, substr with an updated trim value.
+         */
         $trim_val = $iTrimAt;
         $ent_offset = 0;
         $ent_loc = 0;
@@ -1137,9 +1140,9 @@ function truncateWithEntities($s, $iTrimAt) {
 
 
 /**
-* This should go in imap_mailbox.php
-* @param string $mailbox
-*/
+ * This should go in imap_mailbox.php
+ * @param string $mailbox
+ */
 function handleAsSent($mailbox) {
     global $handleAsSent_result;
 
@@ -1304,7 +1307,7 @@ function handleMessageListForm($imapConnection,&$aMailbox,$sButton='',$aUid = ar
             /**
              * on expunge we do not know which messages will be deleted
              * so it's useless to try to sync the cache
-
+             *
              * Close the mailbox so we do not need to parse the untagged expunge
              * responses which do not contain uid info.
              * NB: Closing a mailbox is faster then expunge because the imap
@@ -1378,4 +1381,4 @@ function attachSelectedMessages($imapConnection,$aMsgHeaders) {
     return $composesession;
 }
 
-?>
+?>
\ No newline at end of file