}
}
- function getMessageHeaders($imapConnection, $i, &$from, &$subject, &$date) {
- fputs($imapConnection, "messageFetch FETCH $i:$i RFC822.HEADER.LINES (From Subject Date)\n");
- $read = fgets($imapConnection, 1024);
- /* I have to replace <> with [] because HTML uses <> as tags, thus not printing what's in <> */
- $read = ereg_replace("<", "[", $read);
- $read = ereg_replace(">", "]", $read);
+ function getMessageHeaders($imapConnection, $start, $end, &$from, &$subject, &$date) {
- 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 = substr($read, 5, strlen($read) - 6);
- }
- else if (substr($read, 0, 5) == "Date:") {
- $read = ereg_replace("<", "[", $read);
- $read = ereg_replace(">", "]", $read);
- $date = substr($read, 5, strlen($read) - 6);
- }
- else if (substr($read, 0, 8) == "Subject:") {
- $read = ereg_replace("<", "[", $read);
- $read = ereg_replace(">", "]", $read);
- $subject = substr($read, 8, strlen($read) - 9);
- }
+ $rel_start = $start;
+
+ if (($start > $end) || ($start < 1)) {
+ echo "Error in message header fetching. Start message: $start, End message: $end<BR>";
+ exit;
+ }
+ while ($rel_start <= $end) {
+ if ($end - $rel_start > 50) {
+ $rel_end = $rel_start + 50;
+ } else {
+ $rel_end = $end;
+ }
+ fputs($imapConnection, "messageFetch FETCH $rel_start:$rel_end RFC822.HEADER.LINES (From Subject Date)\n");
$read = fgets($imapConnection, 1024);
+
+ $from_num = $rel_start - 1;
+ $date_num = $rel_start - 1;
+ $subj_num = $rel_start - 1;
+ 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_num] = substr($read, 5, strlen($read) - 6);
+ $from_num++;
+ }
+ else if (substr($read, 0, 5) == "Date:") {
+ $read = ereg_replace("<", "[", $read);
+ $read = ereg_replace(">", "]", $read);
+ $date[$date_num] = substr($read, 5, strlen($read) - 6);
+ $date_num++;
+ }
+ else if (substr($read, 0, 8) == "Subject:") {
+ $read = ereg_replace("<", "[", $read);
+ $read = ereg_replace(">", "]", $read);
+ $subject[$subj_num] = substr($read, 8, strlen($read) - 9);
+ $subj_num++;
+ }
+ $read = fgets($imapConnection, 1024);
+ }
+ $rel_start = $rel_start + 50;
}
}
fputs($imapConnection, "messageStore STORE $i:$q +FLAGS (\\$flag)\n");
}
- function getMessageFlags($imapConnection, $i, &$flags) {
+ function getMessageFlags($imapConnection, $j, &$flags) {
/** * 2 FETCH (FLAGS (\Answered \Seen)) */
- fputs($imapConnection, "messageFetch FETCH $i:$i FLAGS\n");
+ fputs($imapConnection, "messageFetch FETCH $j:$j FLAGS\n");
$read = fgets($imapConnection, 1024);
+ $count = 0;
while ((substr($read, 0, 15) != "messageFetch OK") && (substr($read, 0, 16) != "messageFetch BAD")) {
if (strpos($read, "FLAGS")) {
$read = ereg_replace("\(", "", $read);
} else {
$flags[0] = "None";
}
+ $count++;
$read = fgets($imapConnection, 1024);
}
}
function showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort) {
include("../config/config.php");
- $j = 1;
- while ($j <= $numMessages) {
- $q = 0;
- getMessageHeaders($imapConnection, $j, $from, $subject, $date);
- getMessageFlags($imapConnection, $j, $flags);
-
- $messages[$j]["TIME_STAMP"] = getTimeStamp(explode(" ", trim($date)));
- $messages[$j]["DATE_STRING"] = getDateString(explode(" ", trim($date)));
- $messages[$j]["ID"] = $j;
- $messages[$j]["FROM"] = $from;
- $messages[$j]["SUBJECT"] = $subject;
+ if (1 <= $numMessages) {
+ getMessageHeaders($imapConnection, 1, $numMessages, $from, $subject, $date);
+ }
+
+ $j = 0;
+ while ($j < $numMessages) {
+ $messages[$j]["TIME_STAMP"] = getTimeStamp(explode(" ", trim($date[$j])));
+ $messages[$j]["DATE_STRING"] = getDateString(explode(" ", trim($date[$j])));
+ $messages[$j]["ID"] = $j+1;
+ $messages[$j]["FROM"] = $from[$j];
+ $messages[$j]["SUBJECT"] = $subject[$j];
$messages[$j]["FLAG_DELETED"] = false;
$messages[$j]["FLAG_ANSWERED"] = false;
$messages[$j]["FLAG_SEEN"] = false;
- while ($q < count($flags)) {
- if ($flags[$q] == "Deleted") {
+ $num = 0;
+ getMessageFlags($imapConnection, $j+1, $flags);
+ while ($num < count($flags)) {
+ if ($flags[$num] == "Deleted") {
$messages[$j]["FLAG_DELETED"] = true;
}
- else if ($flags[$q] == "Answered") {
+ else if ($flags[$num] == "Answered") {
$messages[$j]["FLAG_ANSWERED"] = true;
}
- else if ($flags[$q] == "Seen") {
+ else if ($flags[$num] == "Seen") {
$messages[$j]["FLAG_SEEN"] = true;
}
- $q++;
+ $num++;
}
-
$j++;
}
/** Find and remove the ones that are deleted */
- $i = 1;
- $j = 1;
- while ($j <= $numMessages) {
+ $i = 0;
+ $j = 0;
+ while ($j < $numMessages) {
if ($messages[$j]["FLAG_DELETED"] == true) {
$j++;
continue;
$j++;
}
- $numMessagesOld = $numMessages;
- $numMessages = $i - 1;
+ $numMessages = $i;
// There's gotta be messages in the array for it to sort them.
if ($numMessages > 0) {
if ($numMessages == 0) { // if there's no messages in this folder
echo "<TR><TD BGCOLOR=FFFFFF COLSPAN=4><CENTER><BR><B>THIS FOLDER IS EMPTY</B><BR> </CENTER></TD></TR>";
} else if ($startMessage == $endMessage) { // if there's only one message in the box, handle it different.
- $i = $startMessage;
+ $i = $startMessage - 1;
printMessageInfo($imapConnection, $t, $msgs[$i]["ID"], $msgs[$i]["FROM"], $msgs[$i]["SUBJECT"], $msgs[$i]["DATE_STRING"], $msgs[$i]["FLAG_ANSWERED"], $msgs[$i]["FLAG_SEEN"]);
} else {
for ($i = $startMessage - 1;$i <= $endMessage - 1; $i++) {
echo "</FORM><BR></TD></TR><BR>\n";
/** RENAMING FOLDERS **/
- echo "<TR><TD BGCOLOR=DCDCDC ALIGN=CENTER><FONT FACE=\"Arial,Helvetica\"><B>Rename Folder</B></FONT></TD></TR>";
+ echo "<TR><TD BGCOLOR=DCDCDC ALIGN=CENTER><FONT FACE=\"Arial,Helvetica\"><B>Rename or Move Folder</B></FONT></TD></TR>";
echo "<TR><TD BGCOLOR=FFFFFF ALIGN=CENTER>";
- echo "<FORM ACTION=folders_rename.php METHOD=POST>\n";
- echo "Old: <SELECT NAME=mailbox><FONT FACE=\"Arial,Helvetica\">\n";
+ echo "<FORM ACTION=folders_rename_getname.php METHOD=POST>\n";
+ echo "<SELECT NAME=old><FONT FACE=\"Arial,Helvetica\">\n";
for ($i = 0; $i < count($boxesUnformatted); $i++) {
$use_folder = true;
for ($p = 0; $p < count($special_folders); $p++) {
if ($use_folder == true)
echo " <OPTION>$boxesUnformatted[$i]\n";
}
- echo "</SELECT><BR>\n";
- echo "New: <INPUT TYPE=TEXT SIZE=25 NAME=new VALUE=\"INBOX.\"><BR>\n";
- echo "<INPUT TYPE=SUBMIT VALUE=Rename>\n";
+ echo "</SELECT>\n";
+ echo "<INPUT TYPE=SUBMIT VALUE=\"Rename or Move\">\n";
echo "</FORM></TD></TR></TABLE><BR>\n";
?>