mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-10 15:08:28 +03:00
HighestModSeq & Uidvalidity are integers according to IMAP RFC
This commit is contained in:
parent
010794fccb
commit
448120b665
3 changed files with 39 additions and 53 deletions
|
|
@ -30,55 +30,51 @@ class FolderInformation
|
|||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $Flags;
|
||||
public $Flags = array();
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $PermanentFlags;
|
||||
public $PermanentFlags = array();
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $Exists;
|
||||
public $Exists = null;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $Recent;
|
||||
public $Recent = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* rfc3501 2.3.1.1
|
||||
* A 32-bit value
|
||||
* @var int
|
||||
*/
|
||||
public $Uidvalidity;
|
||||
public $Uidvalidity = null;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
public $Unread;
|
||||
public $Unread = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $Uidnext;
|
||||
public $Uidnext = null;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* rfc4551
|
||||
* 1*DIGIT Positive unsigned 64-bit integer
|
||||
* @var int
|
||||
*/
|
||||
public $HighestModSeq;
|
||||
public $HighestModSeq = null;
|
||||
|
||||
function __construct(string $sFolderName, bool $bIsWritable)
|
||||
{
|
||||
$this->FolderName = $sFolderName;
|
||||
$this->IsWritable = $bIsWritable;
|
||||
$this->Exists = null;
|
||||
$this->Recent = null;
|
||||
$this->Flags = array();
|
||||
$this->PermanentFlags = array();
|
||||
|
||||
$this->Unread = null;
|
||||
$this->Uidnext = null;
|
||||
$this->HighestModSeq = null;
|
||||
}
|
||||
|
||||
public function IsFlagSupported(string $sFlag) : bool
|
||||
|
|
|
|||
|
|
@ -300,32 +300,26 @@ class ResponseCollection extends \MailSo\Base\Collection
|
|||
}
|
||||
|
||||
if (is_array($oResponse->OptionalResponse) && \count($oResponse->OptionalResponse) > 1) {
|
||||
if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0] &&
|
||||
is_array($oResponse->OptionalResponse[1]))
|
||||
if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0]
|
||||
&& is_array($oResponse->OptionalResponse[1]))
|
||||
{
|
||||
$oResult->PermanentFlags = $oResponse->OptionalResponse[1];
|
||||
}
|
||||
else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0] &&
|
||||
isset($oResponse->OptionalResponse[1]))
|
||||
else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0])
|
||||
{
|
||||
$oResult->Uidvalidity = $oResponse->OptionalResponse[1];
|
||||
$oResult->Uidvalidity = (int) $oResponse->OptionalResponse[1];
|
||||
}
|
||||
else if ('UNSEEN' === $oResponse->OptionalResponse[0] &&
|
||||
isset($oResponse->OptionalResponse[1]) &&
|
||||
is_numeric($oResponse->OptionalResponse[1]))
|
||||
else if ('UNSEEN' === $oResponse->OptionalResponse[0])
|
||||
{
|
||||
$oResult->Unread = (int) $oResponse->OptionalResponse[1];
|
||||
}
|
||||
else if ('UIDNEXT' === $oResponse->OptionalResponse[0] &&
|
||||
isset($oResponse->OptionalResponse[1]))
|
||||
else if ('UIDNEXT' === $oResponse->OptionalResponse[0])
|
||||
{
|
||||
$oResult->Uidnext = $oResponse->OptionalResponse[1];
|
||||
}
|
||||
else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0] &&
|
||||
isset($oResponse->OptionalResponse[1]) &&
|
||||
\is_numeric($oResponse->OptionalResponse[1]))
|
||||
else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0])
|
||||
{
|
||||
$oResult->HighestModSeq = \trim($oResponse->OptionalResponse[1]);
|
||||
$oResult->HighestModSeq = (int) $oResponse->OptionalResponse[1];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -556,7 +556,7 @@ class MailClient
|
|||
}
|
||||
|
||||
protected function initFolderValues(string $sFolderName, int &$iCount, int &$iUnseenCount,
|
||||
string &$sUidNext, string &$sHighestModSeq = '') : void
|
||||
string &$sUidNext, int &$iHighestModSeq = 0) : void
|
||||
{
|
||||
$aTypes = array(
|
||||
\MailSo\Imap\Enumerations\FolderResponseStatus::MESSAGES,
|
||||
|
|
@ -571,17 +571,13 @@ class MailClient
|
|||
|
||||
$aFolderStatus = $this->oImapClient->FolderStatus($sFolderName, $aTypes);
|
||||
|
||||
$iCount = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::MESSAGES])
|
||||
? (int) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::MESSAGES] : 0;
|
||||
$iCount = (int) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::MESSAGES] ?? 0;
|
||||
|
||||
$iUnseenCount = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UNSEEN])
|
||||
? (int) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UNSEEN] : 0;
|
||||
$iUnseenCount = (int) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UNSEEN] ?? 0;
|
||||
|
||||
$sUidNext = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT])
|
||||
? (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT] : '0';
|
||||
$sUidNext = (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::UIDNEXT] ?? '0';
|
||||
|
||||
$sHighestModSeq = isset($aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::HIGHESTMODSEQ])
|
||||
? (string) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::HIGHESTMODSEQ] : '';
|
||||
$iHighestModSeq = (int) $aFolderStatus[\MailSo\Imap\Enumerations\FolderResponseStatus::HIGHESTMODSEQ] ?? 0;
|
||||
}
|
||||
|
||||
public function GenerateImapClientHash() : string
|
||||
|
|
@ -593,11 +589,11 @@ class MailClient
|
|||
);
|
||||
}
|
||||
|
||||
public function GenerateFolderHash(string $sFolder, int $iCount, int $iUnseenCount, string $sUidNext, string $sHighestModSeq = '') : string
|
||||
public function GenerateFolderHash(string $sFolder, int $iCount, int $iUnseenCount, string $sUidNext, int $iHighestModSeq = 0) : string
|
||||
{
|
||||
$iUnseenCount = 0; // unneccessery
|
||||
return \md5('FolderHash/'.$sFolder.'-'.$iCount.'-'.$iUnseenCount.'-'.$sUidNext.'-'.
|
||||
$sHighestModSeq.'-'.$this->GenerateImapClientHash().'-'.
|
||||
$iHighestModSeq.'-'.$this->GenerateImapClientHash().'-'.
|
||||
\MailSo\Config::$MessageListPermanentFilter
|
||||
);
|
||||
}
|
||||
|
|
@ -697,18 +693,18 @@ class MailClient
|
|||
$iCount = 0;
|
||||
$iUnseenCount = 0;
|
||||
$sUidNext = '0';
|
||||
$sHighestModSeq = '';
|
||||
$iHighestModSeq = 0;
|
||||
|
||||
$this->initFolderValues($sFolderName, $iCount, $iUnseenCount, $sUidNext, $sHighestModSeq);
|
||||
$this->initFolderValues($sFolderName, $iCount, $iUnseenCount, $sUidNext, $iHighestModSeq);
|
||||
|
||||
$aResult = array(
|
||||
'Folder' => $sFolderName,
|
||||
'Hash' => $this->GenerateFolderHash($sFolderName, $iCount, $iUnseenCount, $sUidNext, $sHighestModSeq),
|
||||
'Hash' => $this->GenerateFolderHash($sFolderName, $iCount, $iUnseenCount, $sUidNext, $iHighestModSeq),
|
||||
'MessageCount' => $iCount,
|
||||
'MessageUnseenCount' => $iUnseenCount,
|
||||
'UidNext' => (int) $sUidNext,
|
||||
'Flags' => $aFlags,
|
||||
'HighestModSeq' => $sHighestModSeq,
|
||||
'HighestModSeq' => $iHighestModSeq,
|
||||
'NewMessages' => 'INBOX' === $sFolderName && \MailSo\Config::$CheckNewMessages ?
|
||||
$this->getFolderNextMessageInformation($sFolderName, $sPrevUidNext, $sUidNext) : array()
|
||||
);
|
||||
|
|
@ -726,11 +722,11 @@ class MailClient
|
|||
$iCount = 0;
|
||||
$iUnseenCount = 0;
|
||||
$sUidNext = '0';
|
||||
$sHighestModSeq = '';
|
||||
$iHighestModSeq = 0;
|
||||
|
||||
$this->initFolderValues($sFolderName, $iCount, $iUnseenCount, $sUidNext, $sHighestModSeq);
|
||||
$this->initFolderValues($sFolderName, $iCount, $iUnseenCount, $sUidNext, $iHighestModSeq);
|
||||
|
||||
return $this->GenerateFolderHash($sFolderName, $iCount, $iUnseenCount, $sUidNext, $sHighestModSeq);
|
||||
return $this->GenerateFolderHash($sFolderName, $iCount, $iUnseenCount, $sUidNext, $iHighestModSeq);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1600,7 +1596,7 @@ class MailClient
|
|||
$iMessageRealCount = 0;
|
||||
$iMessageUnseenCount = 0;
|
||||
$sUidNext = '0';
|
||||
$sHighestModSeq = '';
|
||||
$iHighestModSeq = 0;
|
||||
|
||||
$bUseSortIfSupported = $bUseSortIfSupported && $this->oImapClient->IsSupported('SORT');
|
||||
|
||||
|
|
@ -1617,7 +1613,7 @@ class MailClient
|
|||
$oCacher = null;
|
||||
}
|
||||
|
||||
$this->initFolderValues($sFolderName, $iMessageRealCount, $iMessageUnseenCount, $sUidNext, $sHighestModSeq);
|
||||
$this->initFolderValues($sFolderName, $iMessageRealCount, $iMessageUnseenCount, $sUidNext, $iHighestModSeq);
|
||||
|
||||
if ($bUseFilter)
|
||||
{
|
||||
|
|
@ -1625,7 +1621,7 @@ class MailClient
|
|||
}
|
||||
|
||||
$oMessageCollection->FolderHash = $this->GenerateFolderHash(
|
||||
$sFolderName, $iMessageRealCount, $iMessageUnseenCount, $sUidNext, $sHighestModSeq);
|
||||
$sFolderName, $iMessageRealCount, $iMessageUnseenCount, $sUidNext, $iHighestModSeq);
|
||||
|
||||
$oMessageCollection->UidNext = $sUidNext;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue