$senderName = sqimap_find_displayable_name($msg['FROM']);
$urlMailbox = urlencode($mailbox);
- $subject = trim($msg['SUBJECT']);
- if ($subject == '')
- $subject = _("(no subject)");
+ $subject = processSubject($msg['SUBJECT']);
echo "<TR>\n";
if (! isset($search_stuff)) { $search_stuff = ''; }
echo "<a href=\"read_body.php?mailbox=$urlMailbox&passed_id=".$msg["ID"]."&startMessage=$startMessage&show_more=0$search_stuff\"";
do_hook("subject_link");
- 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</a>$bold_end</td>\n";
+ echo ">$flag$subject$flag_end</a>$bold_end</td>\n";
break;
case 5: # flags
$stuff = false;
echo _("Select All");
echo "</A>\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) . '...';
+ }
+
?>