From f93c93b9f1b6756ede217a957decdd504e9b8f64 Mon Sep 17 00:00:00 2001 From: fidian Date: Fri, 9 Feb 2001 19:40:51 +0000 Subject: [PATCH] * Moved subject handling code into its own function. * Hopefully simplified the entity-checking loop. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1097 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/mailbox_display.php | 64 ++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index ddbb6129..44f502f0 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -22,9 +22,7 @@ $senderName = sqimap_find_displayable_name($msg['FROM']); $urlMailbox = urlencode($mailbox); - $subject = trim($msg['SUBJECT']); - if ($subject == '') - $subject = _("(no subject)"); + $subject = processSubject($msg['SUBJECT']); echo "\n"; @@ -111,33 +109,7 @@ if (! isset($search_stuff)) { $search_stuff = ''; } echo "$flag"; - if (strlen($subject) > 55){ - $ent_strlen=strlen($subject); - $trim_val=50; - // see if this is entities-encoded string - if (is_int(strpos($subject, "&#"))){ - // Yes. Iterate through the whole string, find out - // the real number of characters, and if more - // than 55, substr with an updated trim value. - $ent_offset=0; - $ent_count=0; - do { - $ent_loc = strpos($subject, "&#", $ent_offset); - $ent_loc_end = strpos($subject, ";", $ent_offset); - if ($ent_loc_end){ - $trim_val += ($ent_loc_end-$ent_loc)+1; - $ent_strlen -= $ent_loc_end-$ent_loc; - $ent_offset = $ent_loc_end+1; - $ent_count++; - } else $ent_loc=false; - } while (is_int($ent_loc)); - } - if ($ent_strlen>55) echo substr($subject, 0, $trim_val) . '...'; - else echo $subject; - } else echo $subject; - - echo "$flag_end$bold_end\n"; + echo ">$flag$subject$flag_end$bold_end\n"; break; case 5: # flags $stuff = false; @@ -639,5 +611,35 @@ echo _("Select All"); echo "\n"; } - + + function processSubject($subject) + { + // Shouldn't ever happen -- caught too many times in the IMAP functions + if ($subject == '') + return _("(no subject)"); + + if (strlen($subject) <= 55) + return $subject; + + $ent_strlen=strlen($subject); + $trim_val=50; + $ent_offset=0; + // 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 55, substr with an updated trim value. + while (($ent_loc = strpos($subject, '&', $ent_offset)) !== false && + ($ent_loc_end = strpos($subject, ';', $ent_loc)) !== false) + { + $trim_val += ($ent_loc_end-$ent_loc)+1; + $ent_strlen -= $ent_loc_end-$ent_loc; + $ent_offset = $ent_loc_end+1; + } + + if ($ent_strlen <= 55) + return $subject; + + return substr($subject, 0, $trim_val) . '...'; + } + ?> -- 2.25.1