mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Replace "$IndexRange, bool $bIndexIsUid" with new SequenceSet class
This commit is contained in:
parent
46317b5007
commit
64858d285d
6 changed files with 183 additions and 200 deletions
|
|
@ -1037,52 +1037,6 @@ abstract class Utils
|
||||||
return $aResult;
|
return $aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function PrepareFetchSequence(array $aSequence) : string
|
|
||||||
{
|
|
||||||
$aResult = array();
|
|
||||||
if (\count($aSequence))
|
|
||||||
{
|
|
||||||
$iStart = null;
|
|
||||||
$iPrev = null;
|
|
||||||
|
|
||||||
foreach ($aSequence as $sItem)
|
|
||||||
{
|
|
||||||
// simple protection
|
|
||||||
if (false !== \strpos($sItem, ':'))
|
|
||||||
{
|
|
||||||
$aResult[] = $sItem;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$iItem = (int) $sItem;
|
|
||||||
if (null === $iStart || null === $iPrev)
|
|
||||||
{
|
|
||||||
$iStart = $iItem;
|
|
||||||
$iPrev = $iItem;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($iPrev === $iItem - 1)
|
|
||||||
{
|
|
||||||
$iPrev = $iItem;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev;
|
|
||||||
$iStart = $iItem;
|
|
||||||
$iPrev = $iItem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null !== $iStart && null !== $iPrev)
|
|
||||||
{
|
|
||||||
$aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return \implode(',', $aResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param resource $fResource
|
* @param resource $fResource
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -903,17 +903,17 @@ class ImapClient extends \MailSo\Net\NetClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageCopy(string $sToFolder, string $sIndexRange, bool $bIndexIsUid) : self
|
public function MessageCopy(string $sToFolder, SequenceSet $oRange) : self
|
||||||
{
|
{
|
||||||
if (!\strlen($sIndexRange))
|
if (!\count($oRange))
|
||||||
{
|
{
|
||||||
$this->writeLogException(
|
$this->writeLogException(
|
||||||
new \MailSo\Base\Exceptions\InvalidArgumentException,
|
new \MailSo\Base\Exceptions\InvalidArgumentException,
|
||||||
\MailSo\Log\Enumerations\Type::ERROR, true);
|
\MailSo\Log\Enumerations\Type::ERROR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->SendRequestGetResponse($bIndexIsUid ? 'UID COPY' : 'COPY',
|
$this->SendRequestGetResponse($oRange->UID ? 'UID COPY' : 'COPY',
|
||||||
array($sIndexRange, $this->EscapeFolderName($sToFolder)));
|
array((string) $oRange, $this->EscapeFolderName($sToFolder)));
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -922,9 +922,9 @@ class ImapClient extends \MailSo\Net\NetClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageMove(string $sToFolder, string $sIndexRange, bool $bIndexIsUid) : self
|
public function MessageMove(string $sToFolder, SequenceSet $oRange) : self
|
||||||
{
|
{
|
||||||
if (!\strlen($sIndexRange))
|
if (!\count($oRange))
|
||||||
{
|
{
|
||||||
$this->writeLogException(
|
$this->writeLogException(
|
||||||
new \MailSo\Base\Exceptions\InvalidArgumentException,
|
new \MailSo\Base\Exceptions\InvalidArgumentException,
|
||||||
|
|
@ -938,8 +938,8 @@ class ImapClient extends \MailSo\Net\NetClient
|
||||||
\MailSo\Log\Enumerations\Type::ERROR, true);
|
\MailSo\Log\Enumerations\Type::ERROR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->SendRequestGetResponse($bIndexIsUid ? 'UID MOVE' : 'MOVE',
|
$this->SendRequestGetResponse($oRange->UID ? 'UID MOVE' : 'MOVE',
|
||||||
array($sIndexRange, $this->EscapeFolderName($sToFolder)));
|
array((string) $oRange, $this->EscapeFolderName($sToFolder)));
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -969,9 +969,9 @@ class ImapClient extends \MailSo\Net\NetClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageStoreFlag(string $sIndexRange, bool $bIndexIsUid, array $aInputStoreItems, string $sStoreAction) : self
|
public function MessageStoreFlag(SequenceSet $oRange, array $aInputStoreItems, string $sStoreAction) : self
|
||||||
{
|
{
|
||||||
if (!\strlen(\trim($sIndexRange)) ||
|
if (!\count($oRange) ||
|
||||||
!\strlen(\trim($sStoreAction)) ||
|
!\strlen(\trim($sStoreAction)) ||
|
||||||
!\count($aInputStoreItems))
|
!\count($aInputStoreItems))
|
||||||
{
|
{
|
||||||
|
|
@ -985,8 +985,8 @@ class ImapClient extends \MailSo\Net\NetClient
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$this->SendRequestGetResponse(
|
$this->SendRequestGetResponse(
|
||||||
$bIndexIsUid ? 'UID STORE' : 'STORE',
|
$oRange->UID ? 'UID STORE' : 'STORE',
|
||||||
array($sIndexRange, $sStoreAction, $aInputStoreItems)
|
array((string) $oRange, $sStoreAction, $aInputStoreItems)
|
||||||
);
|
);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
79
snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php
Normal file
79
snappymail/v/0.0.0/app/libraries/MailSo/Imap/SequenceSet.php
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of MailSo.
|
||||||
|
*
|
||||||
|
* (c) 2022 DJ Maze
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace MailSo\Imap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category MailSo
|
||||||
|
* @package Mail
|
||||||
|
*/
|
||||||
|
class SequenceSet /*extends \SplFixedArray*/ implements \Countable
|
||||||
|
{
|
||||||
|
public $UID = true;
|
||||||
|
|
||||||
|
private $data = [];
|
||||||
|
|
||||||
|
public function __construct($mItems, bool $uid = true)
|
||||||
|
{
|
||||||
|
if (\is_array($mItems)) {
|
||||||
|
$this->data = $uid ? \array_filter(\array_map(function($id){
|
||||||
|
return \preg_match('/^([0-9]+|\\*):([0-9]+|\\*)/', $id, $dummy) ? $id : \intval($id);
|
||||||
|
}, $mItems)) : $mItems;
|
||||||
|
} else if (\is_scalar($mItems)) {
|
||||||
|
$this->data[] = $mItems;
|
||||||
|
}
|
||||||
|
$this->UID = $uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function count(): int
|
||||||
|
{
|
||||||
|
return \count($this->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function contains($value): bool
|
||||||
|
{
|
||||||
|
return \in_array($value, $this->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString(): string
|
||||||
|
{
|
||||||
|
$aResult = array();
|
||||||
|
$iStart = null;
|
||||||
|
$iPrev = null;
|
||||||
|
|
||||||
|
foreach ($this->data as $mItem) {
|
||||||
|
if (false !== \strpos($mItem, ':')) {
|
||||||
|
$aResult[] = $mItem;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $iStart || null === $iPrev) {
|
||||||
|
$iStart = $mItem;
|
||||||
|
$iPrev = $mItem;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($iPrev === $mItem - 1) {
|
||||||
|
$iPrev = $mItem;
|
||||||
|
} else {
|
||||||
|
$aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev;
|
||||||
|
$iStart = $mItem;
|
||||||
|
$iPrev = $mItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $iStart && null !== $iPrev) {
|
||||||
|
$aResult[] = $iStart === $iPrev ? $iStart : $iStart.':'.$iPrev;
|
||||||
|
}
|
||||||
|
|
||||||
|
return \implode(',', $aResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,6 +12,8 @@
|
||||||
namespace MailSo\Mail;
|
namespace MailSo\Mail;
|
||||||
|
|
||||||
use MailSo\Imap\Enumerations\FolderResponseStatus;
|
use MailSo\Imap\Enumerations\FolderResponseStatus;
|
||||||
|
use MailSo\Imap\Enumerations\StoreAction;
|
||||||
|
use MailSo\Imap\SequenceSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @category MailSo
|
* @category MailSo
|
||||||
|
|
@ -66,25 +68,7 @@ class MailClient
|
||||||
return $this->oImapClient->Capability();
|
return $this->oImapClient->Capability();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getEnvelopeOrHeadersRequestStringForSimpleList() : string
|
private function getEnvelopeOrHeadersRequestString() : string
|
||||||
{
|
|
||||||
return \MailSo\Imap\Enumerations\FetchType::BuildBodyCustomHeaderRequest(array(
|
|
||||||
\MailSo\Mime\Enumerations\Header::RETURN_PATH,
|
|
||||||
\MailSo\Mime\Enumerations\Header::RECEIVED,
|
|
||||||
\MailSo\Mime\Enumerations\Header::MIME_VERSION,
|
|
||||||
\MailSo\Mime\Enumerations\Header::FROM_,
|
|
||||||
\MailSo\Mime\Enumerations\Header::TO_,
|
|
||||||
\MailSo\Mime\Enumerations\Header::CC,
|
|
||||||
\MailSo\Mime\Enumerations\Header::SENDER,
|
|
||||||
\MailSo\Mime\Enumerations\Header::REPLY_TO,
|
|
||||||
\MailSo\Mime\Enumerations\Header::DATE,
|
|
||||||
\MailSo\Mime\Enumerations\Header::SUBJECT,
|
|
||||||
\MailSo\Mime\Enumerations\Header::CONTENT_TYPE,
|
|
||||||
\MailSo\Mime\Enumerations\Header::LIST_UNSUBSCRIBE,
|
|
||||||
), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getEnvelopeOrHeadersRequestString()
|
|
||||||
{
|
{
|
||||||
if (\MailSo\Config::$MessageAllHeaders)
|
if (\MailSo\Config::$MessageAllHeaders)
|
||||||
{
|
{
|
||||||
|
|
@ -138,7 +122,7 @@ class MailClient
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
* @throws \MailSo\Mail\Exceptions\Exception
|
* @throws \MailSo\Mail\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetFlagToAll(string $sFolderName, string $sMessageFlag, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false, ?array $aCustomUids = null)
|
public function MessageSetFlagToAll(string $sFolderName, string $sMessageFlag, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false, ?array $aCustomUids = null) : void
|
||||||
{
|
{
|
||||||
$this->oImapClient->FolderSelect($sFolderName);
|
$this->oImapClient->FolderSelect($sFolderName);
|
||||||
|
|
||||||
|
|
@ -153,21 +137,18 @@ class MailClient
|
||||||
|
|
||||||
if ($oFolderInfo && 0 < $oFolderInfo->MESSAGES)
|
if ($oFolderInfo && 0 < $oFolderInfo->MESSAGES)
|
||||||
{
|
{
|
||||||
$sStoreAction = $bSetAction
|
$oRange = null;
|
||||||
? \MailSo\Imap\Enumerations\StoreAction::ADD_FLAGS_SILENT
|
if (\is_array($aCustomUids)) {
|
||||||
: \MailSo\Imap\Enumerations\StoreAction::REMOVE_FLAGS_SILENT
|
if (\count($aCustomUids)) {
|
||||||
;
|
$oRange = new SequenceSet($aCustomUids);
|
||||||
|
|
||||||
if (\is_array($aCustomUids))
|
|
||||||
{
|
|
||||||
if (\count($aCustomUids))
|
|
||||||
{
|
|
||||||
$this->oImapClient->MessageStoreFlag(implode(',', $aCustomUids), true, array($sMessageFlag), $sStoreAction);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$oRange = new SequenceSet('1:*', false);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
if ($oRange) {
|
||||||
$this->oImapClient->MessageStoreFlag('1:*', false, array($sMessageFlag), $sStoreAction);
|
$sStoreAction = $bSetAction ? StoreAction::ADD_FLAGS_SILENT : StoreAction::REMOVE_FLAGS_SILENT;
|
||||||
|
$this->oImapClient->MessageStoreFlag($oRange, array($sMessageFlag), $sStoreAction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -178,7 +159,7 @@ class MailClient
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
* @throws \MailSo\Mail\Exceptions\Exception
|
* @throws \MailSo\Mail\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetFlag(string $sFolderName, array $aIndexRange, bool $bIndexIsUid, string $sMessageFlag, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false)
|
public function MessageSetFlag(string $sFolderName, SequenceSet $oRange, string $sMessageFlag, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false) : void
|
||||||
{
|
{
|
||||||
$this->oImapClient->FolderSelect($sFolderName);
|
$this->oImapClient->FolderSelect($sFolderName);
|
||||||
|
|
||||||
|
|
@ -192,13 +173,8 @@ class MailClient
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$sStoreAction = $bSetAction
|
$sStoreAction = $bSetAction ? StoreAction::ADD_FLAGS_SILENT : StoreAction::REMOVE_FLAGS_SILENT;
|
||||||
? \MailSo\Imap\Enumerations\StoreAction::ADD_FLAGS_SILENT
|
$this->oImapClient->MessageStoreFlag($oRange, array($sMessageFlag), $sStoreAction);
|
||||||
: \MailSo\Imap\Enumerations\StoreAction::REMOVE_FLAGS_SILENT
|
|
||||||
;
|
|
||||||
|
|
||||||
$this->oImapClient->MessageStoreFlag(\MailSo\Base\Utils::PrepareFetchSequence($aIndexRange),
|
|
||||||
$bIndexIsUid, array($sMessageFlag), $sStoreAction);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -207,9 +183,9 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetFlagged(string $sFolderName, array $aIndexRange, bool $bIndexIsUid, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false) : void
|
public function MessageSetFlagged(string $sFolderName, SequenceSet $oRange, bool $bSetAction = true, bool $bSkipUnsupportedFlag = false) : void
|
||||||
{
|
{
|
||||||
$this->MessageSetFlag($sFolderName, $aIndexRange, $bIndexIsUid,
|
$this->MessageSetFlag($sFolderName, $oRange,
|
||||||
\MailSo\Imap\Enumerations\MessageFlag::FLAGGED, $bSetAction, $bSkipUnsupportedFlag);
|
\MailSo\Imap\Enumerations\MessageFlag::FLAGGED, $bSetAction, $bSkipUnsupportedFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -228,9 +204,9 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageSetSeen(string $sFolderName, array $aIndexRange, bool $bIndexIsUid, bool $bSetAction = true) : void
|
public function MessageSetSeen(string $sFolderName, SequenceSet $oRange, bool $bSetAction = true) : void
|
||||||
{
|
{
|
||||||
$this->MessageSetFlag($sFolderName, $aIndexRange, $bIndexIsUid,
|
$this->MessageSetFlag($sFolderName, $oRange,
|
||||||
\MailSo\Imap\Enumerations\MessageFlag::SEEN, $bSetAction, true);
|
\MailSo\Imap\Enumerations\MessageFlag::SEEN, $bSetAction, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -400,25 +376,24 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageDelete(string $sFolder, array $aIndexRange, bool $bIndexIsUid, bool $bUseExpunge = true, bool $bExpungeAll = false) : self
|
public function MessageDelete(string $sFolder, SequenceSet $oRange, bool $bExpungeAll = false) : self
|
||||||
{
|
{
|
||||||
if (!\strlen($sFolder) || !\count($aIndexRange))
|
if (!\strlen($sFolder) || !\count($oRange))
|
||||||
{
|
{
|
||||||
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->oImapClient->FolderSelect($sFolder);
|
$this->oImapClient->FolderSelect($sFolder);
|
||||||
|
|
||||||
$sIndexRange = \MailSo\Base\Utils::PrepareFetchSequence($aIndexRange);
|
$this->oImapClient->MessageStoreFlag($oRange,
|
||||||
|
|
||||||
$this->oImapClient->MessageStoreFlag($sIndexRange, $bIndexIsUid,
|
|
||||||
array(\MailSo\Imap\Enumerations\MessageFlag::DELETED),
|
array(\MailSo\Imap\Enumerations\MessageFlag::DELETED),
|
||||||
\MailSo\Imap\Enumerations\StoreAction::ADD_FLAGS_SILENT
|
StoreAction::ADD_FLAGS_SILENT
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($bUseExpunge)
|
if ($oRange->UID) {
|
||||||
{
|
$this->oImapClient->MessageExpunge((string) $oRange, true, $bExpungeAll);
|
||||||
$this->oImapClient->MessageExpunge($bIndexIsUid ? $sIndexRange : '', $bIndexIsUid, $bExpungeAll);
|
} else {
|
||||||
|
$this->oImapClient->MessageExpunge('', false, $bExpungeAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
|
@ -429,9 +404,9 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageMove(string $sFromFolder, string $sToFolder, array $aIndexRange, bool $bIndexIsUid, bool $bUseMoveSupported = false, bool $bExpungeAll = false) : self
|
public function MessageMove(string $sFromFolder, string $sToFolder, SequenceSet $oRange, bool $bUseMoveSupported = true, bool $bExpungeAll = false) : self
|
||||||
{
|
{
|
||||||
if (!$sFromFolder || !$sToFolder || !\count($aIndexRange))
|
if (!$sFromFolder || !$sToFolder || !\count($oRange))
|
||||||
{
|
{
|
||||||
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
||||||
}
|
}
|
||||||
|
|
@ -440,15 +415,13 @@ class MailClient
|
||||||
|
|
||||||
if ($bUseMoveSupported && $this->oImapClient->IsSupported('MOVE'))
|
if ($bUseMoveSupported && $this->oImapClient->IsSupported('MOVE'))
|
||||||
{
|
{
|
||||||
$this->oImapClient->MessageMove($sToFolder,
|
$this->oImapClient->MessageMove($sToFolder, $oRange);
|
||||||
\MailSo\Base\Utils::PrepareFetchSequence($aIndexRange), $bIndexIsUid);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->oImapClient->MessageCopy($sToFolder,
|
$this->oImapClient->MessageCopy($sToFolder, $oRange);
|
||||||
\MailSo\Base\Utils::PrepareFetchSequence($aIndexRange), $bIndexIsUid);
|
|
||||||
|
|
||||||
$this->MessageDelete($sFromFolder, $aIndexRange, $bIndexIsUid, true, $bExpungeAll);
|
$this->MessageDelete($sFromFolder, $oRange, $bExpungeAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
|
|
@ -459,16 +432,15 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageCopy(string $sFromFolder, string $sToFolder, array $aIndexRange, bool $bIndexIsUid) : self
|
public function MessageCopy(string $sFromFolder, string $sToFolder, SequenceSet $oRange) : self
|
||||||
{
|
{
|
||||||
if (!$sFromFolder || !$sToFolder || !\count($aIndexRange))
|
if (!$sFromFolder || !$sToFolder || !\count($oRange))
|
||||||
{
|
{
|
||||||
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
throw new \MailSo\Base\Exceptions\InvalidArgumentException;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->oImapClient->FolderSelect($sFromFolder);
|
$this->oImapClient->FolderSelect($sFromFolder);
|
||||||
$this->oImapClient->MessageCopy($sToFolder,
|
$this->oImapClient->MessageCopy($sToFolder, $oRange);
|
||||||
\MailSo\Base\Utils::PrepareFetchSequence($aIndexRange), $bIndexIsUid);
|
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
@ -637,13 +609,13 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function FolderInformation(string $sFolderName, int $iPrevUidNext = 0, array $aUids = array()) : array
|
public function FolderInformation(string $sFolderName, int $iPrevUidNext = 0, SequenceSet $oRange = null) : array
|
||||||
{
|
{
|
||||||
$aFlags = array();
|
$aFlags = array();
|
||||||
|
|
||||||
list($iCount, $iUnseenCount, $iUidNext, $iHighestModSeq, $iAppendLimit, $sMailboxId) = $this->initFolderValues($sFolderName);
|
list($iCount, $iUnseenCount, $iUidNext, $iHighestModSeq, $iAppendLimit, $sMailboxId) = $this->initFolderValues($sFolderName);
|
||||||
|
|
||||||
if (\count($aUids))
|
if ($oRange && \count($oRange))
|
||||||
{
|
{
|
||||||
$this->oImapClient->FolderSelect($sFolderName);
|
$this->oImapClient->FolderSelect($sFolderName);
|
||||||
|
|
||||||
|
|
@ -651,7 +623,7 @@ class MailClient
|
||||||
\MailSo\Imap\Enumerations\FetchType::INDEX,
|
\MailSo\Imap\Enumerations\FetchType::INDEX,
|
||||||
\MailSo\Imap\Enumerations\FetchType::UID,
|
\MailSo\Imap\Enumerations\FetchType::UID,
|
||||||
\MailSo\Imap\Enumerations\FetchType::FLAGS
|
\MailSo\Imap\Enumerations\FetchType::FLAGS
|
||||||
), \MailSo\Base\Utils::PrepareFetchSequence($aUids), true);
|
), (string) $oRange, $oRange->UID);
|
||||||
|
|
||||||
foreach ($aFetchResponse as $oFetchResponse)
|
foreach ($aFetchResponse as $oFetchResponse)
|
||||||
{
|
{
|
||||||
|
|
@ -793,9 +765,9 @@ class MailClient
|
||||||
* @throws \MailSo\Net\Exceptions\Exception
|
* @throws \MailSo\Net\Exceptions\Exception
|
||||||
* @throws \MailSo\Imap\Exceptions\Exception
|
* @throws \MailSo\Imap\Exceptions\Exception
|
||||||
*/
|
*/
|
||||||
public function MessageListByRequestIndexOrUids(MessageCollection $oMessageCollection, array $aRequestIndexOrUids, bool $bIndexAsUid, bool $bSimple = false)
|
protected function MessageListByRequestIndexOrUids(MessageCollection $oMessageCollection, SequenceSet $oRange) : void
|
||||||
{
|
{
|
||||||
if (\count($aRequestIndexOrUids))
|
if (\count($oRange))
|
||||||
{
|
{
|
||||||
$aFetchResponse = $this->oImapClient->Fetch(array(
|
$aFetchResponse = $this->oImapClient->Fetch(array(
|
||||||
\MailSo\Imap\Enumerations\FetchType::INDEX,
|
\MailSo\Imap\Enumerations\FetchType::INDEX,
|
||||||
|
|
@ -804,29 +776,18 @@ class MailClient
|
||||||
\MailSo\Imap\Enumerations\FetchType::INTERNALDATE,
|
\MailSo\Imap\Enumerations\FetchType::INTERNALDATE,
|
||||||
\MailSo\Imap\Enumerations\FetchType::FLAGS,
|
\MailSo\Imap\Enumerations\FetchType::FLAGS,
|
||||||
\MailSo\Imap\Enumerations\FetchType::BODYSTRUCTURE,
|
\MailSo\Imap\Enumerations\FetchType::BODYSTRUCTURE,
|
||||||
$bSimple ?
|
$this->getEnvelopeOrHeadersRequestString()
|
||||||
$this->getEnvelopeOrHeadersRequestStringForSimpleList() :
|
), (string) $oRange, $oRange->UID);
|
||||||
$this->getEnvelopeOrHeadersRequestString()
|
|
||||||
), \MailSo\Base\Utils::PrepareFetchSequence($aRequestIndexOrUids), $bIndexAsUid);
|
|
||||||
|
|
||||||
if (\count($aFetchResponse))
|
if (\count($aFetchResponse))
|
||||||
{
|
{
|
||||||
$aFetchIndexArray = array();
|
$sFetchType = $oRange->UID ? \MailSo\Imap\Enumerations\FetchType::UID : \MailSo\Imap\Enumerations\FetchType::INDEX;
|
||||||
foreach ($aFetchResponse as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem)
|
foreach ($aFetchResponse as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem)
|
||||||
{
|
{
|
||||||
$aFetchIndexArray[$bIndexAsUid
|
if ($oRange->contains($oFetchResponseItem->GetFetchValue($sFetchType))) {
|
||||||
? $oFetchResponseItem->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::UID)
|
|
||||||
: $oFetchResponseItem->GetFetchValue(\MailSo\Imap\Enumerations\FetchType::INDEX)
|
|
||||||
] = $oFetchResponseItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($aRequestIndexOrUids as $iFUid)
|
|
||||||
{
|
|
||||||
if (isset($aFetchIndexArray[$iFUid]))
|
|
||||||
{
|
|
||||||
$oMessageCollection->append(
|
$oMessageCollection->append(
|
||||||
Message::NewFetchResponseInstance(
|
Message::NewFetchResponseInstance($oMessageCollection->FolderName, $oFetchResponseItem)
|
||||||
$oMessageCollection->FolderName, $aFetchIndexArray[$iFUid]));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1092,8 +1053,10 @@ class MailClient
|
||||||
|
|
||||||
if (\count($aUids))
|
if (\count($aUids))
|
||||||
{
|
{
|
||||||
$aRequestUids = \array_slice($aUids, $oParams->iOffset, $oParams->iLimit);
|
$this->MessageListByRequestIndexOrUids(
|
||||||
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestUids, true);
|
$oMessageCollection,
|
||||||
|
new SequenceSet(\array_slice($aUids, $oParams->iOffset, $oParams->iLimit))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($iMessageRealCount)
|
else if ($iMessageRealCount)
|
||||||
|
|
@ -1112,16 +1075,13 @@ class MailClient
|
||||||
$aUids = $this->GetUids($oParams->oCacher, $sSearch,
|
$aUids = $this->GetUids($oParams->oCacher, $sSearch,
|
||||||
$oMessageCollection->FolderName, $oMessageCollection->FolderHash);
|
$oMessageCollection->FolderName, $oMessageCollection->FolderHash);
|
||||||
|
|
||||||
if (\count($aUids))
|
$oMessageCollection->MessageResultCount = \count($aUids);
|
||||||
|
if ($oMessageCollection->MessageResultCount)
|
||||||
{
|
{
|
||||||
$oMessageCollection->MessageResultCount = \count($aUids);
|
$this->MessageListByRequestIndexOrUids(
|
||||||
|
$oMessageCollection,
|
||||||
$aRequestUids = \array_slice($aUids, $oParams->iOffset, $oParams->iLimit);
|
new SequenceSet(\array_slice($aUids, $oParams->iOffset, $oParams->iLimit))
|
||||||
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestUids, true);
|
);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$oMessageCollection->MessageResultCount = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1137,7 +1097,7 @@ class MailClient
|
||||||
$aRequestIndexes = \array_slice(array(1), $oParams->iOffset, $oParams->iLimit);
|
$aRequestIndexes = \array_slice(array(1), $oParams->iOffset, $oParams->iLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->MessageListByRequestIndexOrUids($oMessageCollection, $aRequestIndexes, false);
|
$this->MessageListByRequestIndexOrUids($oMessageCollection, new SequenceSet($aRequestIndexes, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1425,9 +1385,9 @@ class MailClient
|
||||||
$oFolderInformation = $this->oImapClient->FolderCurrentInformation();
|
$oFolderInformation = $this->oImapClient->FolderCurrentInformation();
|
||||||
if ($oFolderInformation && 0 < $oFolderInformation->MESSAGES)
|
if ($oFolderInformation && 0 < $oFolderInformation->MESSAGES)
|
||||||
{
|
{
|
||||||
$this->oImapClient->MessageStoreFlag('1:*', false,
|
$this->oImapClient->MessageStoreFlag(new SequenceSet('1:*', false),
|
||||||
array(\MailSo\Imap\Enumerations\MessageFlag::DELETED),
|
array(\MailSo\Imap\Enumerations\MessageFlag::DELETED),
|
||||||
\MailSo\Imap\Enumerations\StoreAction::ADD_FLAGS_SILENT
|
StoreAction::ADD_FLAGS_SILENT
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->oImapClient->MessageExpunge();
|
$this->oImapClient->MessageExpunge();
|
||||||
|
|
|
||||||
|
|
@ -389,18 +389,14 @@ trait Folders
|
||||||
*/
|
*/
|
||||||
public function DoFolderInformation() : array
|
public function DoFolderInformation() : array
|
||||||
{
|
{
|
||||||
$sFolder = $this->GetActionParam('Folder', '');
|
|
||||||
$iPrevUidNext = (int) $this->GetActionParam('UidNext', 0);
|
|
||||||
$aFlagsUids = \array_filter(\array_map('intval', $this->GetActionParam('FlagsUids', []) ?: []));
|
|
||||||
|
|
||||||
$this->initMailClientConnection();
|
$this->initMailClientConnection();
|
||||||
|
|
||||||
$sForwardedFlag = $this->Config()->Get('labs', 'imap_forwarded_flag', '');
|
|
||||||
$sReadReceiptFlag = $this->Config()->Get('labs', 'imap_read_receipt_flag', '');
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$aInboxInformation = $this->MailClient()->FolderInformation(
|
$aInboxInformation = $this->MailClient()->FolderInformation(
|
||||||
$sFolder, $iPrevUidNext, $aFlagsUids
|
$this->GetActionParam('Folder', ''),
|
||||||
|
(int) $this->GetActionParam('UidNext', 0),
|
||||||
|
new \MailSo\Imap\SequenceSet($this->GetActionParam('FlagsUids', []))
|
||||||
);
|
);
|
||||||
$aInboxInformation['Flags'] = $aInboxInformation['MessagesFlags'];
|
$aInboxInformation['Flags'] = $aInboxInformation['MessagesFlags'];
|
||||||
unset($aInboxInformation['MessagesFlags']);
|
unset($aInboxInformation['MessagesFlags']);
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ use RainLoop\Enumerations\Capa;
|
||||||
use RainLoop\Exceptions\ClientException;
|
use RainLoop\Exceptions\ClientException;
|
||||||
use RainLoop\Model\Account;
|
use RainLoop\Model\Account;
|
||||||
use RainLoop\Notifications;
|
use RainLoop\Notifications;
|
||||||
|
use MailSo\Imap\SequenceSet;
|
||||||
|
|
||||||
trait Messages
|
trait Messages
|
||||||
{
|
{
|
||||||
|
|
@ -87,9 +88,6 @@ trait Messages
|
||||||
{
|
{
|
||||||
$oAccount = $this->initMailClientConnection();
|
$oAccount = $this->initMailClientConnection();
|
||||||
|
|
||||||
$sMessageFolder = $this->GetActionParam('MessageFolder', '');
|
|
||||||
$iMessageUid = $this->GetActionParam('MessageUid', 0);
|
|
||||||
|
|
||||||
$sDraftFolder = $this->GetActionParam('SaveFolder', '');
|
$sDraftFolder = $this->GetActionParam('SaveFolder', '');
|
||||||
if (!\strlen($sDraftFolder))
|
if (!\strlen($sDraftFolder))
|
||||||
{
|
{
|
||||||
|
|
@ -127,9 +125,11 @@ trait Messages
|
||||||
|
|
||||||
$mResult = true;
|
$mResult = true;
|
||||||
|
|
||||||
|
$sMessageFolder = $this->GetActionParam('MessageFolder', '');
|
||||||
|
$iMessageUid = (int) $this->GetActionParam('MessageUid', 0);
|
||||||
if (\strlen($sMessageFolder) && 0 < $iMessageUid)
|
if (\strlen($sMessageFolder) && 0 < $iMessageUid)
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageDelete($sMessageFolder, array($iMessageUid), true, true);
|
$this->MailClient()->MessageDelete($sMessageFolder, new SequenceSet($iMessageUid));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null !== $iNewUid && 0 < $iNewUid)
|
if (null !== $iNewUid && 0 < $iNewUid)
|
||||||
|
|
@ -151,8 +151,6 @@ trait Messages
|
||||||
|
|
||||||
$oConfig = $this->Config();
|
$oConfig = $this->Config();
|
||||||
|
|
||||||
$sDraftFolder = $this->GetActionParam('MessageFolder', '');
|
|
||||||
$iDraftUid = $this->GetActionParam('MessageUid', 0);
|
|
||||||
$sSentFolder = $this->GetActionParam('SaveFolder', '');
|
$sSentFolder = $this->GetActionParam('SaveFolder', '');
|
||||||
$aDraftInfo = $this->GetActionParam('DraftInfo', null);
|
$aDraftInfo = $this->GetActionParam('DraftInfo', null);
|
||||||
$bDsn = '1' === (string) $this->GetActionParam('Dsn', '0');
|
$bDsn = '1' === (string) $this->GetActionParam('Dsn', '0');
|
||||||
|
|
@ -178,7 +176,7 @@ trait Messages
|
||||||
if (\is_array($aDraftInfo) && 3 === \count($aDraftInfo))
|
if (\is_array($aDraftInfo) && 3 === \count($aDraftInfo))
|
||||||
{
|
{
|
||||||
$sDraftInfoType = $aDraftInfo[0];
|
$sDraftInfoType = $aDraftInfo[0];
|
||||||
$sDraftInfoUid = $aDraftInfo[1];
|
$iDraftInfoUid = (int) $aDraftInfo[1];
|
||||||
$sDraftInfoFolder = $aDraftInfo[2];
|
$sDraftInfoFolder = $aDraftInfo[2];
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
@ -187,15 +185,15 @@ trait Messages
|
||||||
{
|
{
|
||||||
case 'reply':
|
case 'reply':
|
||||||
case 'reply-all':
|
case 'reply-all':
|
||||||
$this->MailClient()->MessageSetFlag($sDraftInfoFolder, array($sDraftInfoUid), true,
|
$this->MailClient()->MessageSetFlag($sDraftInfoFolder, new SequenceSet($iDraftInfoUid),
|
||||||
\MailSo\Imap\Enumerations\MessageFlag::ANSWERED, true);
|
\MailSo\Imap\Enumerations\MessageFlag::ANSWERED);
|
||||||
break;
|
break;
|
||||||
case 'forward':
|
case 'forward':
|
||||||
$sForwardedFlag = $this->Config()->Get('labs', 'imap_forwarded_flag', '');
|
$sForwardedFlag = $this->Config()->Get('labs', 'imap_forwarded_flag', '');
|
||||||
if (\strlen($sForwardedFlag))
|
if (\strlen($sForwardedFlag))
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageSetFlag($sDraftInfoFolder, array($sDraftInfoUid), true,
|
$this->MailClient()->MessageSetFlag($sDraftInfoFolder, new SequenceSet($iDraftInfoUid),
|
||||||
$sForwardedFlag, true);
|
$sForwardedFlag);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -260,11 +258,13 @@ trait Messages
|
||||||
|
|
||||||
$this->deleteMessageAttachmnets($oAccount);
|
$this->deleteMessageAttachmnets($oAccount);
|
||||||
|
|
||||||
|
$sDraftFolder = $this->GetActionParam('MessageFolder', '');
|
||||||
|
$iDraftUid = (int) $this->GetActionParam('MessageUid', 0);
|
||||||
if (\strlen($sDraftFolder) && 0 < $iDraftUid)
|
if (\strlen($sDraftFolder) && 0 < $iDraftUid)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageDelete($sDraftFolder, array($iDraftUid), true, true);
|
$this->MailClient()->MessageDelete($sDraftFolder, new SequenceSet($iDraftUid));
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException)
|
catch (\Throwable $oException)
|
||||||
{
|
{
|
||||||
|
|
@ -364,7 +364,7 @@ trait Messages
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageSetFlag($sFolderFullName, array($iUid), true, $sReadReceiptFlag, true, true);
|
$this->MailClient()->MessageSetFlag($sFolderFullName, new SequenceSet($iUid), $sReadReceiptFlag, true, true);
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException) {}
|
catch (\Throwable $oException) {}
|
||||||
}
|
}
|
||||||
|
|
@ -478,11 +478,9 @@ trait Messages
|
||||||
$sFolder = $this->GetActionParam('Folder', '');
|
$sFolder = $this->GetActionParam('Folder', '');
|
||||||
$aUids = \explode(',', (string) $this->GetActionParam('Uids', ''));
|
$aUids = \explode(',', (string) $this->GetActionParam('Uids', ''));
|
||||||
|
|
||||||
$aFilteredUids = \array_filter(\array_map('intval', $aUids));
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageDelete($sFolder, $aFilteredUids, true, true,
|
$this->MailClient()->MessageDelete($sFolder, new SequenceSet($aUids),
|
||||||
!!$this->Config()->Get('labs', 'use_imap_expunge_all_on_delete', false));
|
!!$this->Config()->Get('labs', 'use_imap_expunge_all_on_delete', false));
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException)
|
catch (\Throwable $oException)
|
||||||
|
|
@ -526,14 +524,13 @@ trait Messages
|
||||||
$sToFolder = $this->GetActionParam('ToFolder', '');
|
$sToFolder = $this->GetActionParam('ToFolder', '');
|
||||||
$bMarkAsRead = !empty($this->GetActionParam('MarkAsRead', '0'));
|
$bMarkAsRead = !empty($this->GetActionParam('MarkAsRead', '0'));
|
||||||
|
|
||||||
$aUids = \explode(',', (string) $this->GetActionParam('Uids', ''));
|
$oUids = new SequenceSet(\explode(',', (string) $this->GetActionParam('Uids', '')));
|
||||||
$aFilteredUids = \array_filter(\array_map('intval', $aUids));
|
|
||||||
|
|
||||||
if ($bMarkAsRead)
|
if ($bMarkAsRead)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageSetSeen($sFromFolder, $aFilteredUids, true, true);
|
$this->MailClient()->MessageSetSeen($sFromFolder, $oUids);
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException)
|
catch (\Throwable $oException)
|
||||||
{
|
{
|
||||||
|
|
@ -543,7 +540,7 @@ trait Messages
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageMove($sFromFolder, $sToFolder, $aFilteredUids, true,
|
$this->MailClient()->MessageMove($sFromFolder, $sToFolder, $oUids,
|
||||||
!!$this->Config()->Get('labs', 'use_imap_move', true),
|
!!$this->Config()->Get('labs', 'use_imap_move', true),
|
||||||
!!$this->Config()->Get('labs', 'use_imap_expunge_all_on_delete', false)
|
!!$this->Config()->Get('labs', 'use_imap_expunge_all_on_delete', false)
|
||||||
);
|
);
|
||||||
|
|
@ -585,16 +582,13 @@ trait Messages
|
||||||
{
|
{
|
||||||
$this->initMailClientConnection();
|
$this->initMailClientConnection();
|
||||||
|
|
||||||
$sFromFolder = $this->GetActionParam('FromFolder', '');
|
|
||||||
$sToFolder = $this->GetActionParam('ToFolder', '');
|
|
||||||
|
|
||||||
$aUids = \explode(',', (string) $this->GetActionParam('Uids', ''));
|
|
||||||
$aFilteredUids = \array_filter(\array_map('intval', $aUids));
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageCopy($sFromFolder, $sToFolder,
|
$this->MailClient()->MessageCopy(
|
||||||
$aFilteredUids, true);
|
$this->GetActionParam('FromFolder', ''),
|
||||||
|
$this->GetActionParam('ToFolder', ''),
|
||||||
|
new SequenceSet(\explode(',', (string) $this->GetActionParam('Uids', '')))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException)
|
catch (\Throwable $oException)
|
||||||
{
|
{
|
||||||
|
|
@ -809,14 +803,14 @@ trait Messages
|
||||||
{
|
{
|
||||||
$this->initMailClientConnection();
|
$this->initMailClientConnection();
|
||||||
|
|
||||||
$sFolder = $this->GetActionParam('Folder', '');
|
|
||||||
$bSetAction = '1' === (string) $this->GetActionParam('SetAction', '0');
|
|
||||||
$aUids = \explode(',', (string) $this->GetActionParam('Uids', ''));
|
|
||||||
$aFilteredUids = \array_filter(\array_map('intval', $aUids));
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->{$sActionFunction}($sFolder, $aFilteredUids, true, $bSetAction, true);
|
$this->MailClient()->{$sActionFunction}(
|
||||||
|
$this->GetActionParam('Folder', ''),
|
||||||
|
new SequenceSet(\explode(',', (string) $this->GetActionParam('Uids', ''))),
|
||||||
|
!empty($this->GetActionParam('SetAction', '0')),
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException)
|
catch (\Throwable $oException)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue