From 013f09c8d393b59d24cf30d4a408191d5c8f6c9d Mon Sep 17 00:00:00 2001 From: djmaze Date: Mon, 1 Nov 2021 12:10:45 +0100 Subject: [PATCH] Better fix for broken DoFolderInformation() response --- .../app/libraries/MailSo/Mail/MailClient.php | 17 +++++++++++++--- .../libraries/RainLoop/Actions/Folders.php | 20 ++----------------- 2 files changed, 16 insertions(+), 21 deletions(-) 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 051d6969f..062f6bf4f 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 @@ -653,8 +653,19 @@ class MailClient foreach ($aFetchResponse as $oFetchResponse) { $iUid = (int) $oFetchResponse->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::UID); - $aFlags[$iUid] = - $oFetchResponse->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::FLAGS); + $aLowerFlags = \array_map('strtolower', $oFetchResponse->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::FLAGS)); + $aFlags[] = array( + 'Uid' => $iUid, + 'IsUnseen' => \in_array('\\unseen', $aLowerFlags) || !\in_array('\\seen', $aLowerFlags), + 'IsSeen' => \in_array('\\seen', $aLowerFlags), + 'IsFlagged' => \in_array('\\flagged', $aLowerFlags), + 'IsAnswered' => \in_array('\\answered', $aLowerFlags), + 'IsDeleted' => \in_array('\\deleted', $aLowerFlags), + 'IsForwarded' => \in_array(\strtolower('$Forwarded'), $aLowerFlags) || ($sForwardedFlag && \in_array(\strtolower($sForwardedFlag), $aLowerFlags)), + 'IsReadReceipt' => \in_array(\strtolower('$MDNSent'), $aLowerFlags) || ($sReadReceiptFlag && \in_array(\strtolower($sReadReceiptFlag), $aLowerFlags)), + 'IsJunk' => !\in_array(\strtolower('$NonJunk'), $aLowerFlags) && \in_array(\strtolower('$Junk'), $aLowerFlags), + 'IsPhishing' => \in_array(\strtolower('$Phishing'), $aLowerFlags) + ); } } @@ -666,7 +677,7 @@ class MailClient 'MessageCount' => $iCount, 'MessageUnseenCount' => $iUnseenCount, 'UidNext' => $iUidNext, - 'MessageFlags' => $aFlags, + 'MessagesFlags' => $aFlags, 'HighestModSeq' => $iHighestModSeq, 'AppendLimit' => $iAppendLimit, 'MailboxId' => $sMailboxId, diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Folders.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Folders.php index 6f63cedd5..1a16bbc4c 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Folders.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Folders.php @@ -363,24 +363,8 @@ trait Folders $aInboxInformation = $this->MailClient()->FolderInformation( $sFolder, $iPrevUidNext, $aFlagsUids ); - foreach ($aInboxInformation['MessageFlags'] as $iUid => $aFlags) - { - $aLowerFlags = \array_map('strtolower', $aFlags); - $aInboxInformation['Flags'][$iUid] = array( - 'Uid' => $iUid, - 'IsUnseen' => \in_array('\\unseen', $aLowerFlags) || !\in_array('\\seen', $aLowerFlags), - 'IsSeen' => \in_array('\\seen', $aLowerFlags), - 'IsFlagged' => \in_array('\\flagged', $aLowerFlags), - 'IsAnswered' => \in_array('\\answered', $aLowerFlags), - 'IsDeleted' => \in_array('\\deleted', $aLowerFlags), - 'IsForwarded' => \in_array(\strtolower('$Forwarded'), $aLowerFlags) || ($sForwardedFlag && \in_array(\strtolower($sForwardedFlag), $aLowerFlags)), - 'IsReadReceipt' => \in_array(\strtolower('$MDNSent'), $aLowerFlags) || ($sReadReceiptFlag && \in_array(\strtolower($sReadReceiptFlag), $aLowerFlags)), - 'IsJunk' => !\in_array(\strtolower('$NonJunk'), $aLowerFlags) && \in_array(\strtolower('$Junk'), $aLowerFlags), - 'IsPhishing' => \in_array(\strtolower('$Phishing'), $aLowerFlags) - ); - } - $aInboxInformation['Flags'] = \array_values($aInboxInformation['Flags']); - unset($aInboxInformation['MessageFlags']); + $aInboxInformation['Flags'] = $aInboxInformation['MessagesFlags']; + unset($aInboxInformation['MessagesFlags']); } catch (\Throwable $oException) {