From: nehresma Date: Thu, 13 Apr 2000 03:13:01 +0000 (+0000) Subject: added caching of messages in mailbox, as well as next and previous message X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=90033b640ffb2a1096d76e64b9e0199220231b31;hp=4e0295b2c18bb4270068adcec58d852d4837e7d9;p=squirrelmail.git added caching of messages in mailbox, as well as next and previous message while reading a message. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@418 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index 9339e3db..37168877 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -34,7 +34,7 @@ /** ** This function loops through a group of messages in the mailbox and shows them **/ - function showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort, $color,$show_num) { + function showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort, $color, $show_num, &$msgs) { include ("../config/config.php"); if ($numMessages >= 1) { @@ -145,9 +145,6 @@ } } -// session_register("messages"); -// $messages = serialize($msgs); - displayMessageArray($imapConnection, $numMessages, $startMessage, $msgs, $mailbox, $sort, $color,$show_num); } @@ -158,8 +155,9 @@ include("../config/config.php"); // if cache isn't already set, do it now -// if (!session_is_registered("messages")) -// session_register("messages"); + if (!session_is_registered("msgs")) + session_register("msgs"); + if ($startMessage + ($show_num - 1) < $numMessages) { $endMessage = $startMessage + ($show_num-1); } else { diff --git a/src/read_body.php b/src/read_body.php index 8e3f24a5..ca95b696 100644 --- a/src/read_body.php +++ b/src/read_body.php @@ -14,6 +14,36 @@ if (!isset($date_php)) include("../functions/date.php"); + // given an IMAP message id number, this will look it up in the cached and sorted msgs array and + // return the index. used for finding the next and previous messages + + // returns the index of the next valid message from the array + function findNextMessage() { + global $currentArrayIndex, $msgs; + if ($currentArrayIndex < (count($msgs)-1)) + return $msgs[$currentArrayIndex+1]["ID"]; + return -1; + } + + // returns the index of the previous message from the array + function findPreviousMessage() { + global $currentArrayIndex, $msgs; + if ($currentArrayIndex > 0) + return $msgs[$currentArrayIndex-1]["ID"]; + return -1; + } + + if (isset($msgs)) { + for ($i=0; $i < count($msgs); $i++) { + if ($msgs[$i]["ID"] == $passed_id) { + $currentArrayIndex = $i; + break; + } + } + } else { + $currentArrayIndex = -1; + } + include("../src/load_prefs.php"); $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); sqimap_mailbox_select($imapConnection, $mailbox); @@ -97,16 +127,33 @@ echo " "; echo " "; echo " "; - echo "
"; + echo " "; echo " "; - echo " "; + echo " "; echo _("Message List"); echo " | "; echo " "; echo _("Delete"); echo "  "; echo " "; - echo " "; + echo " "; + echo " \n"; + if ($currentArrayIndex == -1) { + echo "Previous | Next"; + } else { + $prev = findPreviousMessage(); + $next = findNextMessage(); + if ($prev != -1) + echo "" . _("Previous") . " | "; + else + echo _("Previous") . " | "; + if ($next != -1) + echo "" . _("Next") . ""; + else + echo _("Next"); + } + echo " \n"; + echo " "; echo " "; echo " "; echo _("Forward"); diff --git a/src/right_main.php b/src/right_main.php index 39169be0..07ee9f70 100644 --- a/src/right_main.php +++ b/src/right_main.php @@ -78,18 +78,20 @@ // Check to see if we can use cache or not. Currently the only time when you wont use it is // when a link on the left hand frame is used. Also check to make sure we actually have the // array in the registered session data. :) -// if (!$use_mailbox_cache || !session_is_registered("msgs")) { -// echo "
not using cache
\n"; -// if (session_is_registered("messages")) -// session_unregister("messages"); + if ($use_mailbox_cache && session_is_registered("msgs")) { + displayMessageArray($imapConnection, $numMessages, $startMessage, $msgs, $mailbox, $sort, $color,$show_num); + } else { + if (session_is_registered("msgs")) + unset($msgs); - showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort, $color,$show_num); -// } else { -// echo "
using cache
\n"; -// $msgs = unserialize($messages); - -// displayMessageArray($imapConnection, $numMessages, $startMessage, $msgs, $mailbox, $sort, $color,$show_num); -// } + // i have found that only global variables can be registered successfully with a session. therefore + // i am passing in a simple empty variable (msgs) which will be returned with an array and can be + // then registered here as a global variable. whew. + showMessagesForMailbox($imapConnection, $mailbox, $numMessages, $startMessage, $sort, $color, $show_num, $msgs); + + if (session_is_registered("msgs") && isset($msgs)) + session_register("msgs"); + } // close the connection sqimap_logout ($imapConnection);