From ae0b2fab7d0e306fb4e5b1c9f0a3ab220b66cc3f Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Tue, 17 Mar 2009 04:28:47 -0600 Subject: [PATCH] Use MODSEQ as cache ID if available --- imp/lib/Mailbox.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/imp/lib/Mailbox.php b/imp/lib/Mailbox.php index 651b823d0..e870fb9dc 100644 --- a/imp/lib/Mailbox.php +++ b/imp/lib/Mailbox.php @@ -730,9 +730,20 @@ class IMP_Mailbox if (!$this->_searchmbox) { $sortpref = IMP::getSort($this->_mailbox); + /* Use MODSEQ as cache ID if CONDSTORE extension is available. */ + if ($GLOBALS['imp_imap']->ob->queryCapability('CONDSTORE')) { + $condstore = true; + $query = Horde_Imap_Client::STATUS_HIGHESTMODSEQ; + } else { + $condstore = false; + $query = Horde_Imap_Client::STATUS_MESSAGES | Horde_Imap_Client::STATUS_UIDNEXT | Horde_Imap_Client::STATUS_UIDVALIDITY; + } + try { - $status = $GLOBALS['imp_imap']->ob->status($this->_mailbox, Horde_Imap_Client::STATUS_MESSAGES | Horde_Imap_Client::STATUS_UIDNEXT | Horde_Imap_Client::STATUS_UIDVALIDITY); - return implode('|', array($status['uidvalidity'], $status['uidnext'], $status['messages'], $sortpref['by'], $sortpref['dir'])); + $status = $GLOBALS['imp_imap']->ob->status($this->_mailbox, $query); + return $condstore + ? $status['highestmodseq'] + : implode('|', array($status['uidvalidity'], $status['uidnext'], $status['messages'], $sortpref['by'], $sortpref['dir'])); } catch (Horde_Imap_Client_Exception $e) {} } -- 2.11.0