From: lkehresman Date: Fri, 3 Dec 1999 22:03:45 +0000 (+0000) Subject: Fixed some MAJOR bugs X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=e550d5517eebba0d7922d82e3b649c0ac16889c2 Fixed some MAJOR bugs git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@51 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/config/config.php b/config/config.php index 87b93b17..166587e3 100644 --- a/config/config.php +++ b/config/config.php @@ -51,4 +51,7 @@ $special_folders[1] = $trash_folder; $special_folders[2] = "INBOX.Sent"; $special_folders[3] = "INBOX.Drafts"; $special_folders[4] = "INBOX.Templates"; + +/** This is the max chars before a line wrap on plain text messages */ +$wrap_max = 80; ?> diff --git a/functions/mailbox.php b/functions/mailbox.php index d4159f5e..846e1a60 100644 --- a/functions/mailbox.php +++ b/functions/mailbox.php @@ -35,12 +35,10 @@ exit; } - $from_pos = 0; - $date_pos = 0; - $subj_pos = 0; + $pos = 0; while ($rel_start <= $end) { if ($end - $rel_start > 50) { - $rel_end = $rel_start + 50; + $rel_end = $rel_start + 49; } else { $rel_end = $end; } @@ -48,26 +46,35 @@ $read = fgets($imapConnection, 1024); while ((substr($read, 0, 15) != "messageFetch OK") && (substr($read, 0, 16) != "messageFetch BAD")) { + if (substr($read, 0, 5) == "From:") { $read = ereg_replace("<", "EMAILSTART--", $read); $read = ereg_replace(">", "--EMAILEND", $read); - $from[$from_pos] = substr($read, 5, strlen($read) - 6); - $from_pos++; + $from[$pos] = substr($read, 5, strlen($read) - 6); } else if (substr($read, 0, 5) == "Date:") { $read = ereg_replace("<", "<", $read); $read = ereg_replace(">", ">", $read); - $date[$date_pos] = substr($read, 5, strlen($read) - 6); - $date_pos++; + $date[$pos] = substr($read, 5, strlen($read) - 6); } else if (substr($read, 0, 8) == "Subject:") { $read = ereg_replace("<", "<", $read); $read = ereg_replace(">", ">", $read); - $subject[$subj_pos] = substr($read, 8, strlen($read) - 9); - if (strlen(Chop($subject[$subj_pos])) == 0) - $subject[$subj_pos] = "(no subject)"; - $subj_pos++; + $subject[$pos] = substr($read, 8, strlen($read) - 9); + if (strlen(Chop($subject[$pos])) == 0) + $subject[$pos] = "(no subject)"; + } + else if (substr($read, 0, 1) == ")") { + if ($subject[$pos] == "") + $subject[$pos] = "(no subject)"; + else if ($from[$pos] == "") + $from[$pos] = "(unknown sender)"; + else if ($date[$pos] == "") + $from[$pos] = gettimeofday(); + + $pos++; } + $read = fgets($imapConnection, 1024); } $rel_start = $rel_start + 50; @@ -196,6 +203,8 @@ return $box; } + /** This function will fetch the body of a given message and format + it into our standard format. **/ function fetchBody($imapConnection, $id) { fputs($imapConnection, "messageFetch FETCH $id:$id BODY[TEXT]\n"); $count = 0; @@ -205,54 +214,93 @@ $read[$count] = fgets($imapConnection, 1024); } + /** this loop removes the first line, and the last two which + are IMAP information that we don't need. **/ + $i = 0; + $j = 0; + while ($i < count($read)) { + if (($i != 0) && ($i != count($read) - 1) && ($i != count($read) - 2)){ + $readtmp[$j] = $read[$i]; + $j++; + } + $i++; + } + $read = $readtmp; + + /** This loop formats the text, creating links out of linkable stuff too **/ $count = 0; $useHTML= false; while ($count < count($read)) { $read[$count] = "^^$read[$count]"; - if (strpos($read[$count], "") == true) { + + if (strpos(strtolower($read[$count]), "") == true) { $useHTML = true; - } else if (strpos(strtolower($read[$count]), "") == true) { + $useHTML = false; } + $read[$count] = substr($read[$count], 2, strlen($read[$count])); if ($useHTML == false) { - $read[$count] = str_replace(" ", " ", $read[$count]); - $read[$count] = str_replace("\n", "", $read[$count]); - $read[$count] = str_replace("\r", "", $read[$count]); - $read[$count] = str_replace("\t", "    ", $read[$count]); - - $read[$count] = "^^$read[$count]"; - if (strpos(trim(str_replace(" ", "", $read[$count])), ">>") == 2) { - $read[$count] = substr($read[$count], 2, strlen($read[$count])); - $read[$count] = "$read[$count]\n"; - } else if (strpos(trim(str_replace(" ", "", $read[$count])), ">") == 2) { - $read[$count] = substr($read[$count], 2, strlen($read[$count])); - $read[$count] = "$read[$count]\n"; - } else { - $read[$count] = substr($read[$count], 2, strlen($read[$count])); - $read[$count] = "$read[$count]\n"; - } + $read[$count] = parsePlainBodyText($read[$count]); + } else { + $read[$count] = parseHTMLBodyText($read[$count]); + } - if (strpos(strtolower($read[$count]), "http://") != false) { - $start = strpos(strtolower($read[$count]), "http://"); - $link = substr($read[$count], $start, strlen($read[$count])); + $count++; + } + return $read; + } - if (strpos($link, " ")) - $end = strpos($link, " "); - else if (strpos($link, "<")) - $end = strpos($link, "<"); - else - $end = strlen($link); + function parseHTMLBodyText($line) { + return $line; + } - $link = substr($link, 0, $end); + function parsePlainBodyText($line) { + $line = "^^$line"; - $read[$count] = str_replace($link, "$link", $read[$count]); - } - } - $count++; + if ((strpos(strtolower($line), "") == false) && + (strpos(strtolower($line), "") == false)) { + $line = str_replace("<", "<", $line); + $line = str_replace(">", ">", $line); } - return $read; +// $line = wordWrap($line); + $line = str_replace(" ", " ", $line); + $line = str_replace("\t", "        ", $line); + + /** if >> or > are found at the beginning of a line, I'll assume that was + replied text, so make it different colors **/ + if (strpos(trim(str_replace(" ", "", $line)), ">>") == 2) { + $line = substr($line, 2, strlen($line)); + $line = "$line
\n"; + } else if (strpos(trim(str_replace(" ", "", $line)), ">") == 2) { + $line = substr($line, 2, strlen($line)); + $line = "$line
\n"; + } else { + $line = substr($line, 2, strlen($line)); + $line = "$line
\n"; + } + + /** This translates "http://" into a link. It could be made better to accept + "www" and "mailto" also. That should probably be added later. **/ + if (strpos(strtolower($line), "http://") != false) { + $start = strpos(strtolower($line), "http://"); + $link = substr($line, $start, strlen($line)); + + if (strpos($link, "&")) + $end = strpos($link, "&"); + else if (strpos($link, "<")) + $end = strpos($link, "<"); + else + $end = strlen($link); + + $link = substr($link, 0, $end); + + $line = str_replace($link, "$link", $line); + } + + return $line; } ?> diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index 02612731..c82891a0 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -38,6 +38,7 @@ $j = 0; while ($j < $numMessages) { +// echo "$numMessages -- $j -- $subject[$j]
"; $date[$j] = ereg_replace(" ", " ", $date[$j]); $tmpdate = explode(" ", trim($date[$j])); @@ -83,6 +84,7 @@ $msgs[$i]["FLAG_DELETED"] = $messages[$j]["FLAG_DELETED"]; $msgs[$i]["FLAG_ANSWERED"] = $messages[$j]["FLAG_ANSWERED"]; $msgs[$i]["FLAG_SEEN"] = $messages[$j]["FLAG_SEEN"]; + $i++; $j++; } @@ -135,6 +137,15 @@ } } +// $j = 0; +// while ($j < $numMessages) { +// $sub = $msgs[$j]["SUBJECT"]; +// $id = $msgs[$j]["ID"]; +// echo "$id -- $sub
"; +// $j++; +// } +//exit; + if ($startMessage + 24 < $numMessages) { $endMessage = $startMessage + 24; } else { @@ -145,6 +156,7 @@ $prevGroup = $startMessage - 25; $urlMailbox = urlencode($mailbox); + /** This is the beginning of the message list table. It wraps around all messages */ echo ""; diff --git a/functions/strings.php b/functions/strings.php index c7b6544e..17591047 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -27,4 +27,22 @@ return strrev($data); } + // Wraps text at $wrap_max characters + function wordWrap($line) { + $newline = $line; + $lastpart = $line; + $numlines = 0; + $wrap_max = 80; + while (strlen($lastpart) > $wrap_max) { + $pos = $wrap_max; + while ((substr($line, $pos, $pos+1) != " ") && ($pos > 0)) { + $pos--; + } + $before = substr($line, 0, $pos); + $lastpart = substr($line, $pos+1, strlen($line)); + $newline = $before . "
" . $lastpart; + $numlines++; + } + return $newline; + } ?> diff --git a/images/ss_login.gif b/images/ss_login.gif new file mode 100644 index 00000000..991e4b95 Binary files /dev/null and b/images/ss_login.gif differ diff --git a/images/ss_messages.gif b/images/ss_messages.gif new file mode 100644 index 00000000..5e1d55e8 Binary files /dev/null and b/images/ss_messages.gif differ diff --git a/images/ss_motd.gif b/images/ss_motd.gif new file mode 100644 index 00000000..310fc1a0 Binary files /dev/null and b/images/ss_motd.gif differ diff --git a/src/read_body.php b/src/read_body.php index 694c4cd5..b660fefd 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -53,12 +53,12 @@ echo "
\n"; echo "
\n"; - $i = 1; - while ($i < count($body)-2) { - echo "$body[$i]
"; + $i = 0; + while ($i < count($body)) { + echo "$body[$i]"; $i++; } - echo " \n"; + echo "
\n"; echo "  "; echo "\n";