From 54fc65a921bde7e63e99546a246abdc5d36c7c6c Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Fri, 4 Nov 2022 17:32:37 +0100 Subject: [PATCH] Resolve #625 --- .../libraries/MailSo/Imap/SearchCriterias.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SearchCriterias.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SearchCriterias.php index d33c50f3d..6314f6172 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SearchCriterias.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/SearchCriterias.php @@ -19,7 +19,7 @@ namespace MailSo\Imap; abstract class SearchCriterias { const - RegEx = 'in|e?mail|from|to|subject|has|is|date|since|before|text|body|size|larger|bigger|smaller|maxsize|minsize|keyword'; + RegEx = 'in|e?mail|from|to|subject|has|is|date|since|before|text|body|size|larger|bigger|smaller|maxsize|minsize|keyword|older_than|newer_than'; /** https://datatracker.ietf.org/doc/html/rfc3501#section-6.4.4 @@ -275,6 +275,23 @@ abstract class SearchCriterias $aCriteriasResult[] = \gmdate('j-M-Y', $iDateStampTo); } break; + + // https://github.com/the-djmaze/snappymail/issues/625 + case 'READ': + case 'UNREAD': + $aCriteriasResult[] = \str_replace('READ', 'SEEN', $sName); + $bUseCache = false; + break; + case 'OLDER_THAN': + $aCriteriasResult[] = 'BEFORE'; + $aCriteriasResult[] = (new \DateTime())->sub(new \DateInterval("P{$sRawValue}"))->format('j-M-Y'); + break; + case 'NEWER_THAN': + $iTimeFilter = \max( + $iTimeFilter, + (new \DateTime())->sub(new \DateInterval("P{$sRawValue}"))->getTimestamp() + ); + break; } } }