Mark Edwards wrote:
> On Feb 25, 2006, at 2:48 PM, Mark Edwards wrote:
> 
>> Just looking at the code in question, it looks like it builds a giant
>> array with the box's entire index data in it, which obviously will
>> grow along with the size of the mailbox:
>>
>>   // get previous and next message UID
>>   $a_msg_index = $IMAP->message_index(NULL, $_SESSION['sort_col'],
>> $_SESSION['sort_order']);
>>   $MESSAGE['index'] = array_search((string)$_GET['_uid'],
>> $a_msg_index, TRUE);
>>
>>   if (isset($a_msg_index[$MESSAGE['index']-1]))
>>     $javascript .= sprintf("\n%s.set_env('prev_uid', '%s');",
>> $JS_OBJECT_NAME, $a_msg_index[$MESSAGE['index']-1]);
>>   if (isset($a_msg_index[$MESSAGE['index']+1]))
>>     $javascript .= sprintf("\n%s.set_env('next_uid', '%s');",
>> $JS_OBJECT_NAME, $a_msg_index[$MESSAGE['index']+1]);
> 
> A little further testing suggests that its the first line that causes
> the problem:
> 
> $a_msg_index = $IMAP->message_index(NULL, $_SESSION['sort_col'],
> $_SESSION['sort_order']);
> 
> Having a quick look at message_index in program/include/rcube_imap.inc
> it appears that it returns an array of the index data for the whole
> mailbox.  Why is this necessary to retrieve the UID for two messages? 
> Surely there is a better way to do this?

If you find one, please let me know...
Having a look at IlohaMail, it does the same.
> -- 
> Mark Edwards
> 
> 
Thomas



Reply via email to