Properly backslash escape IMAP folder flags

This commit is contained in:
djmaze 2021-03-29 15:58:07 +02:00
parent 544d2272c8
commit 34efa2205c
3 changed files with 39 additions and 41 deletions

View file

@ -18,10 +18,10 @@ namespace MailSo\Imap\Enumerations;
*/
abstract class MessageFlag
{
const RECENT = '\Recent';
const SEEN = '\Seen';
const DELETED = '\Deleted';
const FLAGGED = '\Flagged';
const ANSWERED = '\Answered';
const DRAFT = '\Draft';
const RECENT = '\\Recent';
const SEEN = '\\Seen';
const DELETED = '\\Deleted';
const FLAGGED = '\\Flagged';
const ANSWERED = '\\Answered';
const DRAFT = '\\Draft';
}

View file

@ -116,12 +116,12 @@ class Folder
public function IsSelectable() : bool
{
return !\in_array('\noselect', $this->aFlagsLowerCase);
return !\in_array('\\noselect', $this->aFlagsLowerCase);
}
public function IsInbox() : bool
{
return 'INBOX' === \strtoupper($this->sFullNameRaw) || \in_array('\inbox', $this->aFlagsLowerCase);
return 'INBOX' === \strtoupper($this->sFullNameRaw) || \in_array('\\inbox', $this->aFlagsLowerCase);
}
/**

View file

@ -76,7 +76,7 @@ class Folder implements \JsonSerializable
public static function NewNonExistenInstance(string $sFullNameRaw, string $sDelimiter) : self
{
return new self(
new \MailSo\Imap\Folder($sFullNameRaw, $sDelimiter, array('\NoSelect')), true, false);
new \MailSo\Imap\Folder($sFullNameRaw, $sDelimiter, array('\\Noselect')), true, false);
}
public function Name() : string
@ -188,43 +188,41 @@ class Folder implements \JsonSerializable
public function GetFolderListType() : int
{
$aFlags = $this->oImapFolder->FlagsLowerCase();
$iListType = \MailSo\Imap\Enumerations\FolderType::USER;
switch (true)
{
case \in_array('\inbox', $aFlags) || 'INBOX' === \strtoupper($this->FullNameRaw()):
$iListType = \MailSo\Imap\Enumerations\FolderType::INBOX;
break;
case \in_array('\sent', $aFlags):
case \in_array('\sentmail', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::SENT;
break;
case \in_array('\drafts', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::DRAFTS;
break;
case \in_array('\junk', $aFlags):
case \in_array('\spam', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::JUNK;
break;
case \in_array('\trash', $aFlags):
case \in_array('\bin', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::TRASH;
break;
case \in_array('\important', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::IMPORTANT;
break;
case \in_array('\flagged', $aFlags):
case \in_array('\starred', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::FLAGGED;
break;
case \in_array('\all', $aFlags):
case \in_array('\allmail', $aFlags):
case \in_array('\archive', $aFlags):
$iListType = \MailSo\Imap\Enumerations\FolderType::ALL;
break;
case \in_array('\\inbox', $aFlags) || 'INBOX' === \strtoupper($this->FullNameRaw()):
return \MailSo\Imap\Enumerations\FolderType::INBOX;
case \in_array('\\sent', $aFlags):
case \in_array('\\sentmail', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::SENT;
case \in_array('\\drafts', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::DRAFTS;
case \in_array('\\junk', $aFlags):
case \in_array('\\spam', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::JUNK;
case \in_array('\\trash', $aFlags):
case \in_array('\\bin', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::TRASH;
case \in_array('\\important', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::IMPORTANT;
case \in_array('\\flagged', $aFlags):
case \in_array('\\starred', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::FLAGGED;
case \in_array('\\all', $aFlags):
case \in_array('\\allmail', $aFlags):
case \in_array('\\archive', $aFlags):
return \MailSo\Imap\Enumerations\FolderType::ALL;
}
return $iListType;
return \MailSo\Imap\Enumerations\FolderType::USER;
}
public function jsonSerialize()