diff --git a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php index 43b03a664..8d165466e 100644 --- a/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php +++ b/integrations/nextcloud/snappymail/lib/Util/SnappyMailHelper.php @@ -2,6 +2,8 @@ namespace OCA\SnappyMail\Util; +use RainLoop\Enumerations\SignMeType; + class SnappyMailResponse extends \OCP\AppFramework\Http\Response { public function render(): string @@ -184,7 +186,7 @@ class SnappyMailHelper try { $oAccount = $oActions->LoginProcess($aCredentials[1], $aCredentials[2]); if (!$isOIDC && $oAccount - && $oConfig->Get('login', 'sign_me_auto', \RainLoop\Enumerations\SignMeType::DefaultOff) === \RainLoop\Enumerations\SignMeType::DefaultOn + && $oConfig->Get('login', 'sign_me_auto', SignMeType::DefaultOff->value) === SignMeType::DefaultOn->value ) { $oActions->SetSignMeToken($oAccount); } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php index 10003e83a..5ee403a8f 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Commands/Messages.php @@ -354,11 +354,10 @@ trait Messages * @throws \MailSo\RuntimeException * @throws \MailSo\Net\Exceptions\* * @throws \MailSo\Imap\Exceptions\* - * $sStoreAction = \MailSo\Imap\Enumerations\StoreAction::ADD_FLAGS_SILENT */ - public function MessageStoreFlag(SequenceSet $oRange, array $aInputStoreItems, string $sStoreAction) : ?ResponseCollection + public function MessageStoreFlag(SequenceSet $oRange, array $aInputStoreItems, StoreAction $eStoreAction) : ?ResponseCollection { - if (!\count($oRange) || !\strlen(\trim($sStoreAction)) || !\count($aInputStoreItems)) { + if (!\count($oRange) || !\count($aInputStoreItems)) { return null; } @@ -372,7 +371,7 @@ trait Messages return $this->SendRequestGetResponse( $oRange->UID ? 'UID STORE' : 'STORE', - array((string) $oRange, $sStoreAction, $aInputStoreItems) + array((string) $oRange, $eStoreAction->value, $aInputStoreItems) ); } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/ResponseType.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/ResponseType.php index d80cc3664..1aee9d563 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/ResponseType.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/ResponseType.php @@ -16,10 +16,10 @@ namespace MailSo\Imap\Enumerations; * @package Imap * @subpackage Enumerations */ -abstract class ResponseType +enum ResponseType { - const UNKNOWN = 0; - const TAGGED = 1; - const UNTAGGED = 2; - const CONTINUATION = 3; + case UNKNOWN; + case TAGGED; + case UNTAGGED; + case CONTINUATION; } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/StoreAction.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/StoreAction.php index 172e0e89b..f7cb02570 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/StoreAction.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Enumerations/StoreAction.php @@ -16,12 +16,12 @@ namespace MailSo\Imap\Enumerations; * @package Imap * @subpackage Enumerations */ -abstract class StoreAction +enum StoreAction: string { -// const SET_FLAGS = 'FLAGS'; -// const SET_FLAGS_SILENT = 'FLAGS.SILENT'; - const ADD_FLAGS = '+FLAGS'; - const ADD_FLAGS_SILENT = '+FLAGS.SILENT'; - const REMOVE_FLAGS = '-FLAGS'; - const REMOVE_FLAGS_SILENT = '-FLAGS.SILENT'; +// case SET_FLAGS = 'FLAGS'; +// case SET_FLAGS_SILENT = 'FLAGS.SILENT'; + case ADD_FLAGS = '+FLAGS'; + case ADD_FLAGS_SILENT = '+FLAGS.SILENT'; + case REMOVE_FLAGS = '-FLAGS'; + case REMOVE_FLAGS_SILENT = '-FLAGS.SILENT'; } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php index 2ec335901..3c0ea7827 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php @@ -12,6 +12,7 @@ namespace MailSo\Imap; use MailSo\Net\Enumerations\ConnectionSecurityType; +use MailSo\Imap\Enumerations\ResponseType; /** * @category MailSo @@ -147,7 +148,7 @@ class ImapClient extends \MailSo\Net\NetClient if ('CRAM-MD5' === $type) { $oResponse = $this->SendRequestGetResponse('AUTHENTICATE', array($type)); - $sChallenge = $this->getResponseValue($oResponse, Enumerations\ResponseType::CONTINUATION); + $sChallenge = $this->getResponseValue($oResponse, ResponseType::CONTINUATION); $sAuth = $SASL->authenticate($sLogin, $sPassword, $sChallenge); $this->logMask($sAuth); $this->sendRaw($sAuth); @@ -164,13 +165,13 @@ class ImapClient extends \MailSo\Net\NetClient $this->sendRaw($sAuth); } $oResponse = $this->getResponse(); -// if ($oResponse->getLast()->ResponseType === Enumerations\ResponseType::CONTINUATION) +// if ($oResponse->getLast()->ResponseType === ResponseType::CONTINUATION) if ($SASL->hasChallenge()) { - $sChallenge = $SASL->challenge($this->getResponseValue($oResponse, Enumerations\ResponseType::CONTINUATION)); + $sChallenge = $SASL->challenge($this->getResponseValue($oResponse, ResponseType::CONTINUATION)); $this->logMask($sChallenge); $this->sendRaw($sChallenge); $oResponse = $this->getResponse(); - $SASL->verify($this->getResponseValue($oResponse, Enumerations\ResponseType::CONTINUATION)); + $SASL->verify($this->getResponseValue($oResponse, ResponseType::CONTINUATION)); $this->sendRaw(''); $oResponse = $this->getResponse(); } @@ -181,7 +182,7 @@ class ImapClient extends \MailSo\Net\NetClient $this->logMask($sAuth); $oResponse = $this->SendRequestGetResponse('AUTHENTICATE', array($type, $sAuth)); $oR = $oResponse->getLast(); - if ($oR && Enumerations\ResponseType::CONTINUATION === $oR->ResponseType) { + if ($oR && ResponseType::CONTINUATION === $oR->ResponseType) { if (!empty($oR->ResponseList[1]) && \preg_match('/^[a-zA-Z0-9=+\/]+$/', $oR->ResponseList[1])) { $this->logWrite(\base64_decode($oR->ResponseList[1]), \LOG_WARNING); } @@ -192,7 +193,7 @@ class ImapClient extends \MailSo\Net\NetClient else if ($this->hasCapability('LOGINDISABLED')) { $oResponse = $this->SendRequestGetResponse('AUTHENTICATE', array($type)); - $sB64 = $this->getResponseValue($oResponse, Enumerations\ResponseType::CONTINUATION); + $sB64 = $this->getResponseValue($oResponse, ResponseType::CONTINUATION); $sAuth = $SASL->authenticate($sLogin, $sPassword, $sB64); $this->logMask($sAuth); $this->sendRaw($sAuth, true); @@ -363,7 +364,7 @@ class ImapClient extends \MailSo\Net\NetClient try { $oResponseCollection = $this->SendRequestGetResponse('NAMESPACE'); foreach ($oResponseCollection as $oResponse) { - if (Enumerations\ResponseType::UNTAGGED === $oResponse->ResponseType + if (ResponseType::UNTAGGED === $oResponse->ResponseType && 'NAMESPACE' === $oResponse->StatusOrIndex) { return new NamespaceResult($oResponse); @@ -444,10 +445,10 @@ class ImapClient extends \MailSo\Net\NetClient return $this->getResponse(); } - protected function getResponseValue(ResponseCollection $oResponseCollection, int $type = 0): string + protected function getResponseValue(ResponseCollection $oResponseCollection, ResponseType $type): string { $oResponse = $oResponseCollection->getLast(); - if ($oResponse && (!$type || $type === $oResponse->ResponseType)) { + if ($oResponse && ($type === ResponseType::UNKNOWN || $type === $oResponse->ResponseType)) { $sResult = $oResponse->ResponseList[1] ?? null; if ($sResult) { return $sResult; @@ -501,7 +502,7 @@ class ImapClient extends \MailSo\Net\NetClient $oResult->append($oResponse); if ($oResponse->IsStatusResponse - && Enumerations\ResponseType::UNTAGGED === $oResponse->ResponseType + && ResponseType::UNTAGGED === $oResponse->ResponseType && Enumerations\ResponseStatus::PREAUTH === $oResponse->StatusOrIndex // && (Enumerations\ResponseStatus::PREAUTH === $oResponse->StatusOrIndex || Enumerations\ResponseStatus::BYE === $oResponse->StatusOrIndex) ) { @@ -514,7 +515,7 @@ class ImapClient extends \MailSo\Net\NetClient // \SnappyMail\Log::warning('IMAP', "{$oResponse->OptionalResponse[0]}: {$this->lastCommand}"); } - if ($sEndTag === $oResponse->Tag || Enumerations\ResponseType::CONTINUATION === $oResponse->ResponseType) { + if ($sEndTag === $oResponse->Tag || ResponseType::CONTINUATION === $oResponse->ResponseType) { if (isset($this->aTagTimeouts[$sEndTag])) { $this->writeLog((\microtime(true) - $this->aTagTimeouts[$sEndTag]).' ('.$sEndTag.')', \LOG_DEBUG); @@ -546,7 +547,7 @@ class ImapClient extends \MailSo\Net\NetClient while (true) { $oResponse = $this->partialParseResponse(); - if (Enumerations\ResponseType::UNTAGGED === $oResponse->ResponseType) { + if (ResponseType::UNTAGGED === $oResponse->ResponseType) { yield $oResponse; } else { $oResult->append($oResponse); @@ -558,7 +559,7 @@ class ImapClient extends \MailSo\Net\NetClient // \SnappyMail\Log::warning('IMAP', "{$oResponse->OptionalResponse[0]}: {$this->lastCommand}"); } - if ($sEndTag === $oResponse->Tag || Enumerations\ResponseType::CONTINUATION === $oResponse->ResponseType) { + if ($sEndTag === $oResponse->Tag || ResponseType::CONTINUATION === $oResponse->ResponseType) { if (isset($this->aTagTimeouts[$sEndTag])) { $this->writeLog((\microtime(true) - $this->aTagTimeouts[$sEndTag]).' ('.$sEndTag.')', \LOG_DEBUG); diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Response.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Response.php index 1c76dfb2e..a4fec9eb9 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Response.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/Response.php @@ -29,7 +29,7 @@ class Response public bool $IsStatusResponse = false; - public int $ResponseType = 0; + public ResponseType $ResponseType = ResponseType::UNKNOWN; public ?string $Tag = null; 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 ecca5da53..768d6d8da 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 @@ -119,8 +119,8 @@ class MailClient { if (\count($oRange)) { if ($this->oImapClient->FolderSelect($sFolderName)->IsFlagSupported($sMessageFlag)) { - $sStoreAction = $bSetAction ? StoreAction::ADD_FLAGS_SILENT : StoreAction::REMOVE_FLAGS_SILENT; - $this->oImapClient->MessageStoreFlag($oRange, array($sMessageFlag), $sStoreAction); + $eStoreAction = $bSetAction ? StoreAction::ADD_FLAGS_SILENT : StoreAction::REMOVE_FLAGS_SILENT; + $this->oImapClient->MessageStoreFlag($oRange, array($sMessageFlag), $eStoreAction); } else if (!$bSkipUnsupportedFlag) { throw new \MailSo\RuntimeException('Message flag "'.$sMessageFlag.'" is not supported.'); } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php index 56168d8a7..7b727fab7 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/MessagePriority.php @@ -16,9 +16,14 @@ namespace MailSo\Mime\Enumerations; * @package Mime * @subpackage Enumerations */ -abstract class MessagePriority +enum MessagePriority: int { - const LOW = 5; - const NORMAL = 3; - const HIGH = 1; + case Lowest = 5; + case Normal = 3; + case Highest = 1; + + public function toMIME() : string + { + return $this->value . ' (' . $this->name . ')'; + } } diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Message.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Message.php index 48253b33d..161d48a77 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Message.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Message.php @@ -196,26 +196,9 @@ class Message extends Part return $this; } - public function SetPriority(int $iValue) : self + public function SetPriority(Enumerations\MessagePriority $eValue) : self { - $sResult = ''; - switch ($iValue) - { - case Enumerations\MessagePriority::HIGH: - $sResult = Enumerations\MessagePriority::HIGH.' (Highest)'; - break; - case Enumerations\MessagePriority::NORMAL: - $sResult = Enumerations\MessagePriority::NORMAL.' (Normal)'; - break; - case Enumerations\MessagePriority::LOW: - $sResult = Enumerations\MessagePriority::LOW.' (Lowest)'; - break; - } - - if (\strlen($sResult)) { - $this->aHeadersValue[Enumerations\Header::X_PRIORITY] = $sResult; - } - + $this->aHeadersValue[Enumerations\Header::X_PRIORITY] = $eValue->toMIME(); return $this; } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php index 598170540..8d7140d7f 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -600,7 +600,7 @@ class Actions 'SoundNotification' => true, 'NotificationSound' => 'new-mail', 'DesktopNotifications' => true, - 'Layout' => (int) $oConfig->Get('defaults', 'view_layout', Enumerations\Layout::SIDE_PREVIEW), + 'Layout' => (int) $oConfig->Get('defaults', 'view_layout', Enumerations\Layout::SIDE_PREVIEW->value), 'EditorDefaultType' => \str_replace('Forced', '', $oConfig->Get('defaults', 'view_editor_type', '')), 'editorWysiwyg' => 'Squire', 'UseCheckboxesInList' => (bool) $oConfig->Get('defaults', 'view_use_checkboxes', true), @@ -736,10 +736,10 @@ class Actions } $aResult['signMe'] = [ - SignMeType::DefaultOff => 0, - SignMeType::DefaultOn => 1, - SignMeType::Unused => 2 - ][(string) $oConfig->Get('login', 'sign_me_auto', SignMeType::DefaultOff)]; + SignMeType::DefaultOff->value => 0, + SignMeType::DefaultOn->value => 1, + SignMeType::Unused->value => 2 + ][(string) $oConfig->Get('login', 'sign_me_auto', SignMeType::DefaultOff->value)]; } } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php index 1153e9bee..487cafb2d 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Messages.php @@ -1012,7 +1012,7 @@ trait Messages } if (!empty($this->GetActionParam('markAsImportant', 0))) { - $oMessage->SetPriority(\MailSo\Mime\Enumerations\MessagePriority::HIGH); + $oMessage->SetPriority(\MailSo\Mime\Enumerations\MessagePriority::Highest); } $oMessage->SetSubject($this->GetActionParam('subject', '')); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php index a60783edd..72e0cfda3 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/User.php @@ -160,11 +160,11 @@ trait User return \min(100, \max(10, $iValue)); }); - $this->setSettingsFromParams($oSettings, 'Layout', 'int', function ($iValue) { - return (int) (\in_array((int) $iValue, array(\RainLoop\Enumerations\Layout::NO_PREVIEW, - \RainLoop\Enumerations\Layout::SIDE_PREVIEW, \RainLoop\Enumerations\Layout::BOTTOM_PREVIEW)) ? - $iValue : \RainLoop\Enumerations\Layout::SIDE_PREVIEW); - }); + $this->setSettingsFromParams($oSettings, 'Layout', 'int', + fn(int $iValue) => ( + \RainLoop\Enumerations\Layout::tryFrom($iValue) ?: \RainLoop\Enumerations\Layout::SIDE_PREVIEW + )->value + ); $this->setSettingsFromParams($oSettings, 'EditorDefaultType', 'string'); $this->setSettingsFromParams($oSettings, 'editorWysiwyg', 'string'); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index 87478571c..adc04b97d 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -300,7 +300,7 @@ When this value is gethostname, the gethostname() value is used. 'determine_user_language' => array(true, 'Detect language from browser header `Accept-Language`'), 'determine_user_domain' => array(false, 'Like default_domain but then HTTP_HOST/SERVER_NAME without www.'), - 'sign_me_auto' => array(\RainLoop\Enumerations\SignMeType::DefaultOff, + 'sign_me_auto' => array(\RainLoop\Enumerations\SignMeType::DefaultOff->value, 'This option allows webmail to remember the logged in user once they closed the browser window. diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/Layout.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/Layout.php index 0fe236ae7..44840dfbd 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/Layout.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/Layout.php @@ -2,9 +2,9 @@ namespace RainLoop\Enumerations; -abstract class Layout +enum Layout: int { - const NO_PREVIEW = 0; - const SIDE_PREVIEW = 1; - const BOTTOM_PREVIEW = 2; + case NO_PREVIEW = 0; + case SIDE_PREVIEW = 1; + case BOTTOM_PREVIEW = 2; } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/SignMeType.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/SignMeType.php index bb50c4345..0e8b3b0f6 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/SignMeType.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Enumerations/SignMeType.php @@ -2,9 +2,9 @@ namespace RainLoop\Enumerations; -abstract class SignMeType +enum SignMeType: string { - const DefaultOff = 'DefaultOff'; - const DefaultOn = 'DefaultOn'; - const Unused = 'Unused'; + case DefaultOff = 'DefaultOff'; + case DefaultOn = 'DefaultOn'; + case Unused = 'Unused'; }