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 abstract class MessageFlag
{ {
const RECENT = '\Recent'; const RECENT = '\\Recent';
const SEEN = '\Seen'; const SEEN = '\\Seen';
const DELETED = '\Deleted'; const DELETED = '\\Deleted';
const FLAGGED = '\Flagged'; const FLAGGED = '\\Flagged';
const ANSWERED = '\Answered'; const ANSWERED = '\\Answered';
const DRAFT = '\Draft'; const DRAFT = '\\Draft';
} }

View file

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