Undeleted count cache fixes

This commit is contained in:
RainLoop Team 2014-09-29 21:20:13 +04:00
parent a1cde2c246
commit 9dbed6f929

View file

@ -670,6 +670,12 @@ class MailClient
if (\MailSo\Config::$MessageListUndeletedFilter) if (\MailSo\Config::$MessageListUndeletedFilter)
{ {
$oFolder = $this->oImapClient->FolderCurrentInformation();
if (!$oFolder || $oFolder->FolderName !== $sFolderName)
{
$this->oImapClient->FolderExamine($sFolderName);
}
$aUids = $this->getSearchUidsResult('', $aUids = $this->getSearchUidsResult('',
$sFolderName, false, false, false, $oCacher); $sFolderName, false, false, false, $oCacher);
@ -677,13 +683,13 @@ class MailClient
if (0 < $iNewCount && $iNewCount !== $iCount) if (0 < $iNewCount && $iNewCount !== $iCount)
{ {
$iCount = $iNewCount; $iCount = $iNewCount;
$aUids = $this->getSearchUidsResult('is:unread', $aUids = $this->getSearchUidsResult('is:unread',
$sFolderName, false, false, false, $oCacher); $sFolderName, false, false, false, $oCacher);
$iUnseenCount = \count($aUids); $iUnseenCount = \count($aUids);
} }
else else if (0 === $iNewCount)
{ {
$iCount = 0; $iCount = 0;
$iUnseenCount = 0; $iUnseenCount = 0;
@ -1097,7 +1103,7 @@ class MailClient
$iD = \time() - 3600 * 24 * 30 * \MailSo\Config::$MessageListDateFilter; $iD = \time() - 3600 * 24 * 30 * \MailSo\Config::$MessageListDateFilter;
$iTimeFilter = \gmmktime(1, 1, 1, \gmdate('n', $iD), 1, \gmdate('Y', $iD)); $iTimeFilter = \gmmktime(1, 1, 1, \gmdate('n', $iD), 1, \gmdate('Y', $iD));
} }
if (0 < \strlen(\trim($sSearch))) if (0 < \strlen(\trim($sSearch)))
{ {
$sGmailRawSearch = ''; $sGmailRawSearch = '';
@ -1275,7 +1281,7 @@ class MailClient
$aCriteriasResult[] = 'SINCE'; $aCriteriasResult[] = 'SINCE';
$aCriteriasResult[] = \gmdate('j-M-Y', $iTimeFilter > $iDateStampFrom ? $aCriteriasResult[] = \gmdate('j-M-Y', $iTimeFilter > $iDateStampFrom ?
$iDateStampFrom : $iTimeFilter); $iDateStampFrom : $iTimeFilter);
if (0 < $iTimeFilter && $iTimeFilter > $iDateStampFrom) if (0 < $iTimeFilter && $iTimeFilter > $iDateStampFrom)
{ {
$iTimeFilter = 0; $iTimeFilter = 0;
@ -1339,7 +1345,7 @@ class MailClient
return $sCriteriasResult; return $sCriteriasResult;
} }
/** /**
* @param array $aThreads * @param array $aThreads
* @return array * @return array
@ -1418,12 +1424,12 @@ class MailClient
{ {
$sSearchHash .= ' UNDELETED'; $sSearchHash .= ' UNDELETED';
} }
if (0 < \MailSo\Config::$MessageListDateFilter) if (0 < \MailSo\Config::$MessageListDateFilter)
{ {
$iD = \time() - 3600 * 24 * 30 * \MailSo\Config::$MessageListDateFilter; $iD = \time() - 3600 * 24 * 30 * \MailSo\Config::$MessageListDateFilter;
$iTimeFilter = \gmmktime(1, 1, 1, \gmdate('n', $iD), 1, \gmdate('Y', $iD)); $iTimeFilter = \gmmktime(1, 1, 1, \gmdate('n', $iD), 1, \gmdate('Y', $iD));
$sSearchHash .= ' SINCE '.\gmdate('j-M-Y', $iTimeFilter); $sSearchHash .= ' SINCE '.\gmdate('j-M-Y', $iTimeFilter);
} }
@ -1431,7 +1437,7 @@ class MailClient
{ {
$sSearchHash = 'ALL'; $sSearchHash = 'ALL';
} }
if ($oCacher && $oCacher->IsInited()) if ($oCacher && $oCacher->IsInited())
{ {
$sSerializedHash = $sSerializedHash =
@ -1451,7 +1457,7 @@ class MailClient
{ {
$this->oLogger->Write('Get Serialized Thread UIDS from cache ("'.$sFolderName.'" / '.$sSearchHash.') [count:'.\count($aSerializedUids).']'); $this->oLogger->Write('Get Serialized Thread UIDS from cache ("'.$sFolderName.'" / '.$sSearchHash.') [count:'.\count($aSerializedUids).']');
} }
return $aSerializedUids; return $aSerializedUids;
} }
} }
@ -1491,7 +1497,7 @@ class MailClient
if ($oCacher && $oCacher->IsInited() && !empty($sSerializedHash)) if ($oCacher && $oCacher->IsInited() && !empty($sSerializedHash))
{ {
$oCacher->Set($sSerializedHash, serialize($aResult)); $oCacher->Set($sSerializedHash, serialize($aResult));
if ($this->oLogger) if ($this->oLogger)
{ {
$this->oLogger->Write('Save Serialized Thread UIDS to cache ("'.$sFolderName.'" / '.$sSearchHash.') [count:'.\count($aResult).']'); $this->oLogger->Write('Save Serialized Thread UIDS to cache ("'.$sFolderName.'" / '.$sSearchHash.') [count:'.\count($aResult).']');
@ -1500,7 +1506,7 @@ class MailClient
return $aResult; return $aResult;
} }
/** /**
* @param \MailSo\Mail\MessageCollection &$oMessageCollection * @param \MailSo\Mail\MessageCollection &$oMessageCollection
* @param array $aRequestIndexOrUids * @param array $aRequestIndexOrUids
@ -1568,7 +1574,7 @@ class MailClient
* @param bool $bUseSortIfSupported = true * @param bool $bUseSortIfSupported = true
* @param bool $bUseESearchOrESortRequest = false * @param bool $bUseESearchOrESortRequest = false
* @param \MailSo\Cache\CacheClient|null $oCacher = null * @param \MailSo\Cache\CacheClient|null $oCacher = null
* *
* @return Array|bool * @return Array|bool
*/ */
private function getSearchUidsResult($sSearch, $sFolderName, $sFolderHash, private function getSearchUidsResult($sSearch, $sFolderName, $sFolderHash,
@ -1740,14 +1746,14 @@ class MailClient
$aLastCollapsedThreadUids = array(); $aLastCollapsedThreadUids = array();
$aThreads = array(); $aThreads = array();
$iMessageCount = 0; $iMessageCount = 0;
$iMessageRealCount = 0; $iMessageRealCount = 0;
$iMessageUnseenCount = 0; $iMessageUnseenCount = 0;
$sUidNext = '0'; $sUidNext = '0';
$bUseSortIfSupported = $bUseSortIfSupported ? $this->oImapClient->IsSupported('SORT') : false; $bUseSortIfSupported = $bUseSortIfSupported ? $this->oImapClient->IsSupported('SORT') : false;
$bUseThreadSortIfSupported = $bUseThreadSortIfSupported ? $bUseThreadSortIfSupported = $bUseThreadSortIfSupported ?
($this->oImapClient->IsSupported('THREAD=REFS') || $this->oImapClient->IsSupported('THREAD=REFERENCES') || $this->oImapClient->IsSupported('THREAD=ORDEREDSUBJECT')) : false; ($this->oImapClient->IsSupported('THREAD=REFS') || $this->oImapClient->IsSupported('THREAD=REFERENCES') || $this->oImapClient->IsSupported('THREAD=ORDEREDSUBJECT')) : false;
@ -1784,7 +1790,7 @@ class MailClient
$aIndexOrUids = $this->getSearchUidsResult($sSearch, $aIndexOrUids = $this->getSearchUidsResult($sSearch,
$oMessageCollection->FolderName, $oMessageCollection->FolderHash, $oMessageCollection->FolderName, $oMessageCollection->FolderHash,
$bUseSortIfSupported, $bUseESearchOrESortRequest, $oCacher); $bUseSortIfSupported, $bUseESearchOrESortRequest, $oCacher);
$bIndexAsUid = true; $bIndexAsUid = true;
} }
else else
@ -1796,7 +1802,7 @@ class MailClient
$bUseSortIfSupported, $bUseESearchOrESortRequest, $oCacher); $bUseSortIfSupported, $bUseESearchOrESortRequest, $oCacher);
$aThreads = $this->MessageListThreadsMap($oMessageCollection->FolderName, $oMessageCollection->FolderHash, $oCacher); $aThreads = $this->MessageListThreadsMap($oMessageCollection->FolderName, $oMessageCollection->FolderHash, $oCacher);
$aExpandedThreadsUids = \is_array($aExpandedThreadsUids) ? $aExpandedThreadsUids : array(); $aExpandedThreadsUids = \is_array($aExpandedThreadsUids) ? $aExpandedThreadsUids : array();
$bWatchExpanded = 0 < \count($aExpandedThreadsUids); $bWatchExpanded = 0 < \count($aExpandedThreadsUids);
@ -1813,7 +1819,7 @@ class MailClient
} }
} }
} }
$aNewIndexOrUids = array(); $aNewIndexOrUids = array();
foreach ($aIndexOrUids as $iUid) foreach ($aIndexOrUids as $iUid)
{ {
@ -1843,7 +1849,7 @@ class MailClient
$aIndexOrUids = $aNewIndexOrUids; $aIndexOrUids = $aNewIndexOrUids;
unset($aNewIndexOrUids); unset($aNewIndexOrUids);
$iMessageCount = \count($aIndexOrUids); $iMessageCount = \count($aIndexOrUids);
$bIndexAsUid = true; $bIndexAsUid = true;
} }
@ -1851,12 +1857,12 @@ class MailClient
{ {
$aIndexOrUids = array(1); $aIndexOrUids = array(1);
$bIndexAsUid = false; $bIndexAsUid = false;
if (1 < $iMessageCount) if (1 < $iMessageCount)
{ {
if ($bMessageListOptimization || if ($bMessageListOptimization ||
(!\MailSo\Config::$MessageListUndeletedFilter && 0 === \MailSo\Config::$MessageListDateFilter)) (!\MailSo\Config::$MessageListUndeletedFilter && 0 === \MailSo\Config::$MessageListDateFilter))
{ {
$aIndexOrUids = \array_reverse(\range(1, $iMessageCount)); $aIndexOrUids = \array_reverse(\range(1, $iMessageCount));
} }
else else