From e3fd72571cf0d09d106213ba8e879a242ce26ba5 Mon Sep 17 00:00:00 2001 From: djmaze <> Date: Thu, 6 Jan 2022 12:49:00 +0100 Subject: [PATCH] This change should make MessageListByRequestIndexOrUids faster --- .../v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php | 5 +++++ .../v/0.0.0/app/libraries/MailSo/Mail/MailClient.php | 11 +++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php index 0d9847441..538cb6fc2 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php @@ -55,6 +55,11 @@ class SequenceSet /*extends \SplFixedArray*/ implements \Countable return \array_search($value, $this->data); } + public function getArrayCopy(): array + { + return $this->data; + } + public function __toString(): string { $aResult = array(); diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index abba14ac6..bd37ffd18 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -781,16 +781,15 @@ class MailClient if (\count($aFetchResponse)) { - $aCollection = []; + $aCollection = \array_fill_keys($oRange->getArrayCopy(), null); $sFetchType = $oRange->UID ? \MailSo\Imap\Enumerations\FetchType::UID : \MailSo\Imap\Enumerations\FetchType::INDEX; foreach ($aFetchResponse as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem) { - $i = $oRange->indexOf($oFetchResponseItem->GetFetchValue($sFetchType)); - if (false !== $i) { - $aCollection[$i] = Message::NewFetchResponseInstance($oMessageCollection->FolderName, $oFetchResponseItem); + $id = $oFetchResponseItem->GetFetchValue($sFetchType); + if (\array_key_exists($id, $aCollection)) { + $aCollection[$id] = Message::NewFetchResponseInstance($oMessageCollection->FolderName, $oFetchResponseItem); } } - \ksort($aCollection); - $oMessageCollection->exchangeArray(\array_values($aCollection)); + $oMessageCollection->exchangeArray(\array_values(\array_filter($aCollection))); } } }