From: Michael L. <ml...@ml...> - 2005-12-20 01:55:54
|
Any chance this might be incorporated into the source tree soon? Michael Long wrote: > Introduces new function sqimap_get_mailboxes() > > Most of the logic in functions > sqimap_mailbox_tree(), sqimap_mailbox_list(), sqimap_mailbox_list_all() > has been replaced with calls to sqimap_get_mailboxes() > > This needs patch imap_mailbox.php.sqimap_mailbox_parse.diff > [because this is the caller, and the 2nd argument was removed from > sqimap_mailbox_parse()] > > ##### 1. LSUB/LIST/LIST (SUBSCRIBED) AND FOLDER CACHING > > We want to get the list of subscribed folders, and all of the proper > flags, as quickly as possible. > > If the server supports LIST-SUBSCRIBED, we can simply do a > LIST-SUBSCRIBED and get all pertinent information. Otherwise, we do a > LSUB, and then a LIST. We need to do the list because LSUB does not > return message flags (and for those servers that do return them, they > are not always authorative or current) It no longer does an individual > LIST on every single folder, but rather uses the one LIST command. > Doing one list (even returning lots of folders not subscribed) should > still be much faster than doing individual LISTS on just the > subscribed folders. > > Folders that are subscribed but non-existent will be silently ignored > (and not show on the mailbox tree) > > The mailbox listing code has been centralized to a new function > sqimap_get_mailboxes, and most of the logic from sqimap_mailbox_list, > sqimap_mailbox_list_all, and sqimap_mailbox_tree has been moved to > this function. > > Mailbox listings are now cached per session, except where a refresh is > forced (such as from the Folders option page). This has the added > bonus that the folders are only requested once, instead of seperately > from each pane. > > This eliminates (depending on setup) > 1 LSUB call - right pane > N LIST calls (per mailbox) - right pane > > ##### 2. FOLDER FLAGS FROM LIST > Folder tree now sees correct folder flags (previous code from > sqimap_mailbox_tree never did anything more than LSUB, so it never > knew the correct flags). This fixes some issues with NoSelect folders, > weird sorting, etc. > > imap_mailbox.php: sqimap_get_mailboxes(), sqimap_mailbox_tree() > > ##### 3. NO MAILBOXES (PHP WARNINGS) > Eliminates warnings for mailboxes that have no folders (just INBOX) > > imap_mailbox.php: sqimap_get_mailboxes() > > ##### 4. LIST INBOX > If INBOX is not found in the subscribed list, it will now search the > LIST array (cached), rather than doing a specific 'LIST "" "INBOX"' > (it will still do this if it can't find it in the cached list) > > This eliminates 1 LIST call > > imap_mailbox.php: sqimap_get_mailboxes() > > ##### 5. NEW FLAGS > NonExistent and PlaceHolder mailbox flags (from LIST-SUBCRIBED) now > supported. For now, they are treated as NoSelect > > imap_mailbox.php: sqimap_mailbox_tree() > |