From: Michael M Slusarz Date: Tue, 17 Mar 2009 10:28:47 +0000 (-0600) Subject: Use MODSEQ as cache ID if available X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=ae0b2fab7d0e306fb4e5b1c9f0a3ab220b66cc3f;p=horde.git Use MODSEQ as cache ID if available --- 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) {} }