mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-11-02 10:28:50 +03:00
Convert some abstract enumeration classes to PHP 8.1+ (Backed)Enum
This commit is contained in:
parent
a5592108a5
commit
5d43aeef0b
15 changed files with 66 additions and 76 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class Response
|
|||
|
||||
public bool $IsStatusResponse = false;
|
||||
|
||||
public int $ResponseType = 0;
|
||||
public ResponseType $ResponseType = ResponseType::UNKNOWN;
|
||||
|
||||
public ?string $Tag = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 . ')';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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', ''));
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue