mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-05 23:47:03 +03:00
Fixed: more strong optimazation for [labs]imap_message_list_count_limit_trigger (#903)
This commit is contained in:
parent
d844938ee3
commit
d890a6d80e
2 changed files with 56 additions and 6 deletions
|
|
@ -41,6 +41,11 @@ class Config
|
||||||
*/
|
*/
|
||||||
public static $MessageListCountLimitTrigger = 0;
|
public static $MessageListCountLimitTrigger = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public static $MessageListUndeletedOnly = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var int
|
* @var int
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1412,7 +1412,10 @@ class MailClient
|
||||||
}
|
}
|
||||||
|
|
||||||
$sCriteriasResult = \trim($sCriteriasResult);
|
$sCriteriasResult = \trim($sCriteriasResult);
|
||||||
$sCriteriasResult .= ' UNDELETED';
|
if (\MailSo\Config::$MessageListUndeletedOnly)
|
||||||
|
{
|
||||||
|
$sCriteriasResult = \trim($sCriteriasResult.' UNDELETED');
|
||||||
|
}
|
||||||
|
|
||||||
$sFilter = \trim($sFilter);
|
$sFilter = \trim($sFilter);
|
||||||
if ('' !== $sFilter)
|
if ('' !== $sFilter)
|
||||||
|
|
@ -1423,7 +1426,7 @@ class MailClient
|
||||||
$sCriteriasResult = \trim($sCriteriasResult);
|
$sCriteriasResult = \trim($sCriteriasResult);
|
||||||
if ('' !== \MailSo\Config::$MessageListPermanentFilter)
|
if ('' !== \MailSo\Config::$MessageListPermanentFilter)
|
||||||
{
|
{
|
||||||
$sCriteriasResult .= ' '.\MailSo\Config::$MessageListPermanentFilter;
|
$sCriteriasResult = \trim($sCriteriasResult.' '.\MailSo\Config::$MessageListPermanentFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sCriteriasResult = \trim($sCriteriasResult);
|
$sCriteriasResult = \trim($sCriteriasResult);
|
||||||
|
|
@ -1865,7 +1868,7 @@ class MailClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $aResultUids;
|
return \is_array($aResultUids) ? $aResultUids : array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1964,7 +1967,7 @@ class MailClient
|
||||||
$bUseThreadSortIfSupported = false;
|
$bUseThreadSortIfSupported = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 < $iMessageRealCount)
|
if (0 < $iMessageRealCount && !$bMessageListOptimization)
|
||||||
{
|
{
|
||||||
$mAllSortedUids = $this->GetUids($oCacher, '', $sFilter,
|
$mAllSortedUids = $this->GetUids($oCacher, '', $sFilter,
|
||||||
$oMessageCollection->FolderName, $oMessageCollection->FolderHash, $bUseSortIfSupported);
|
$oMessageCollection->FolderName, $oMessageCollection->FolderHash, $bUseSortIfSupported);
|
||||||
|
|
@ -2061,13 +2064,55 @@ class MailClient
|
||||||
|
|
||||||
if (0 < \count($aUids))
|
if (0 < \count($aUids))
|
||||||
{
|
{
|
||||||
$iOffset = (0 > $iOffset) ? 0 : $iOffset;
|
|
||||||
$aRequestUids = \array_slice($aUids, $iOffset, $iLimit);
|
$aRequestUids = \array_slice($aUids, $iOffset, $iLimit);
|
||||||
|
|
||||||
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestUids, true);
|
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestUids, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (0 < $iMessageRealCount)
|
||||||
|
{
|
||||||
|
if ($this->oLogger)
|
||||||
|
{
|
||||||
|
$this->oLogger->Write('List optimization (count: '.$iMessageRealCount.
|
||||||
|
', limit:'.\MailSo\Config::$MessageListCountLimitTrigger.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
$oMessageCollection->MessageCount = $iMessageRealCount;
|
||||||
|
$oMessageCollection->MessageUnseenCount = $iMessageUnseenCount;
|
||||||
|
|
||||||
|
if (0 < \strlen($sSearch) || $bUseFilter)
|
||||||
|
{
|
||||||
|
$aUids = $this->GetUids($oCacher, $sSearch, $sFilter,
|
||||||
|
$oMessageCollection->FolderName, $oMessageCollection->FolderHash);
|
||||||
|
|
||||||
|
if (0 < \count($aUids))
|
||||||
|
{
|
||||||
|
$oMessageCollection->MessageResultCount = \count($aUids);
|
||||||
|
|
||||||
|
$aRequestUids = \array_slice($aUids, $iOffset, $iLimit);
|
||||||
|
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestUids, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$oMessageCollection->MessageResultCount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$oMessageCollection->MessageResultCount = $iMessageRealCount;
|
||||||
|
|
||||||
|
if (1 < $iMessageRealCount)
|
||||||
|
{
|
||||||
|
$aRequestIndexes = \array_slice(array_reverse(range(1, $iMessageRealCount)), $iOffset, $iLimit);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$aRequestIndexes = \array_slice(array(1), $iOffset, $iLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestIndexes, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($bUseThreadSortIfSupported && 0 === $iThreadUid && \is_array($mAllThreads) && 0 < \count($mAllThreads))
|
if ($bUseThreadSortIfSupported && 0 === $iThreadUid && \is_array($mAllThreads) && 0 < \count($mAllThreads))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue