mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-07 00:17:03 +03:00
MultipleStreamWriter() to single WriteStream()
This commit is contained in:
parent
2d52493b89
commit
8b4674b87f
5 changed files with 48 additions and 59 deletions
|
|
@ -609,52 +609,44 @@ abstract class Utils
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param resource $rRead
|
* @param resource $rRead
|
||||||
|
* @param resource $rWrite
|
||||||
*/
|
*/
|
||||||
public static function MultipleStreamWriter($rRead, array $aWrite, int $iBufferLen = 8192, bool $bResetTimeLimit = true, bool $bFixCrLf = false, bool $bRewindOnComplete = false) : int
|
public static function WriteStream($rRead, $rWrite, int $iBufferLen = 8192, bool $bFixCrLf = false, bool $bRewindOnComplete = false) : int
|
||||||
{
|
{
|
||||||
$mResult = false;
|
if (!\is_resource($rRead) || !\is_resource($rWrite)) {
|
||||||
if (\is_resource($rRead) && \count($aWrite)) {
|
return -1;
|
||||||
$mResult = 0;
|
|
||||||
while (!\feof($rRead)) {
|
|
||||||
$sBuffer = \fread($rRead, $iBufferLen);
|
|
||||||
if (false === $sBuffer) {
|
|
||||||
$mResult = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('' === $sBuffer) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($bFixCrLf) {
|
|
||||||
$sBuffer = \str_replace("\n", "\r\n", \str_replace("\r", '', $sBuffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
$mResult += \strlen($sBuffer);
|
|
||||||
|
|
||||||
foreach ($aWrite as $rWriteStream) {
|
|
||||||
$mWriteResult = \fwrite($rWriteStream, $sBuffer);
|
|
||||||
if (false === $mWriteResult) {
|
|
||||||
$mResult = false;
|
|
||||||
break 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($bResetTimeLimit) {
|
|
||||||
static::ResetTimeLimit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mResult && $bRewindOnComplete) {
|
$iResult = 0;
|
||||||
foreach ($aWrite as $rWriteStream) {
|
|
||||||
if (\is_resource($rWriteStream)) {
|
while (!\feof($rRead)) {
|
||||||
\rewind($rWriteStream);
|
$sBuffer = \fread($rRead, $iBufferLen);
|
||||||
}
|
if (false === $sBuffer) {
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('' === $sBuffer) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($bFixCrLf) {
|
||||||
|
$sBuffer = \str_replace("\n", "\r\n", \str_replace("\r", '', $sBuffer));
|
||||||
|
}
|
||||||
|
|
||||||
|
$iResult += \strlen($sBuffer);
|
||||||
|
|
||||||
|
if (false === \fwrite($rWrite, $sBuffer)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static::ResetTimeLimit();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $mResult;
|
if ($bRewindOnComplete) {
|
||||||
|
\rewind($rWrite);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $iResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function Utf7ModifiedToUtf8(string $sStr) : string
|
public static function Utf7ModifiedToUtf8(string $sStr) : string
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ trait Messages
|
||||||
{
|
{
|
||||||
$this->writeLog('Write to connection stream', \LOG_INFO);
|
$this->writeLog('Write to connection stream', \LOG_INFO);
|
||||||
|
|
||||||
\MailSo\Base\Utils::MultipleStreamWriter($rMessageStream, array($this->ConnectionResource()));
|
\MailSo\Base\Utils::WriteStream($rMessageStream, $this->ConnectionResource());
|
||||||
|
|
||||||
$this->sendRaw('');
|
$this->sendRaw('');
|
||||||
$oResponses = $this->getResponse();
|
$oResponses = $this->getResponse();
|
||||||
|
|
|
||||||
|
|
@ -152,15 +152,12 @@ trait Attachments
|
||||||
|
|
||||||
unset($sContentType, $sFileName, $sMimeIndex);
|
unset($sContentType, $sFileName, $sMimeIndex);
|
||||||
|
|
||||||
if (\is_resource($rResource))
|
if (\is_resource($rResource)) {
|
||||||
{
|
|
||||||
$sHash = \MailSo\Base\Utils::Sha1Rand($sFileNameIn.'~'.$sContentTypeIn);
|
$sHash = \MailSo\Base\Utils::Sha1Rand($sFileNameIn.'~'.$sContentTypeIn);
|
||||||
$rTempResource = $oFileProvider->GetFile($oAccount, $sHash, 'wb+');
|
$rTempResource = $oFileProvider->GetFile($oAccount, $sHash, 'wb+');
|
||||||
|
|
||||||
if (\is_resource($rTempResource))
|
if (\is_resource($rTempResource)) {
|
||||||
{
|
if (-1 < \MailSo\Base\Utils::WriteStream($rResource, $rTempResource)) {
|
||||||
if (false !== \MailSo\Base\Utils::MultipleStreamWriter($rResource, array($rTempResource)))
|
|
||||||
{
|
|
||||||
$sResultHash = $sHash;
|
$sResultHash = $sHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,7 @@ trait Messages
|
||||||
if ($oMessage) {
|
if ($oMessage) {
|
||||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||||
|
|
||||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream($oMessage->ToStream(false), $rMessageStream, 8192, true);
|
||||||
$oMessage->ToStream(false), array($rMessageStream), 8192, true, true);
|
|
||||||
|
|
||||||
if (false !== $iMessageStreamSize) {
|
if (false !== $iMessageStreamSize) {
|
||||||
$sMessageId = $oMessage->MessageId();
|
$sMessageId = $oMessage->MessageId();
|
||||||
|
|
@ -168,8 +167,9 @@ trait Messages
|
||||||
if ($oMessage) {
|
if ($oMessage) {
|
||||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||||
|
|
||||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||||
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
|
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
|
||||||
|
);
|
||||||
|
|
||||||
if (false !== $iMessageStreamSize) {
|
if (false !== $iMessageStreamSize) {
|
||||||
$bDsn = !empty($this->GetActionParam('dsn', 0));
|
$bDsn = !empty($this->GetActionParam('dsn', 0));
|
||||||
|
|
@ -217,8 +217,9 @@ trait Messages
|
||||||
} else {
|
} else {
|
||||||
$rAppendMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
$rAppendMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||||
|
|
||||||
$iAppendMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
$iAppendMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||||
$oMessage->ToStream(false), array($rAppendMessageStream), 8192, true, true, true);
|
$oMessage->ToStream(false), $rAppendMessageStream, 8192, true, true
|
||||||
|
);
|
||||||
|
|
||||||
$this->Plugins()->RunHook('filter.send-message-stream',
|
$this->Plugins()->RunHook('filter.send-message-stream',
|
||||||
array($oAccount, &$rAppendMessageStream, &$iAppendMessageStreamSize));
|
array($oAccount, &$rAppendMessageStream, &$iAppendMessageStreamSize));
|
||||||
|
|
@ -317,8 +318,9 @@ trait Messages
|
||||||
if ($oMessage) {
|
if ($oMessage) {
|
||||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||||
|
|
||||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||||
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
|
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
|
||||||
|
);
|
||||||
|
|
||||||
if (false !== $iMessageStreamSize) {
|
if (false !== $iMessageStreamSize) {
|
||||||
$this->smtpSendMessage($oAccount, $oMessage, $rMessageStream, $iMessageStreamSize, false);
|
$this->smtpSendMessage($oAccount, $oMessage, $rMessageStream, $iMessageStreamSize, false);
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,10 @@ class FileStorage implements \RainLoop\Providers\Files\IFiles
|
||||||
public function PutFile(\RainLoop\Model\Account $oAccount, string $sKey, /*resource*/ $rSource) : bool
|
public function PutFile(\RainLoop\Model\Account $oAccount, string $sKey, /*resource*/ $rSource) : bool
|
||||||
{
|
{
|
||||||
$bResult = false;
|
$bResult = false;
|
||||||
if ($rSource)
|
if ($rSource) {
|
||||||
{
|
|
||||||
$rOpenOutput = \fopen($this->generateFullFileName($oAccount, $sKey, true), 'w+b');
|
$rOpenOutput = \fopen($this->generateFullFileName($oAccount, $sKey, true), 'w+b');
|
||||||
if ($rOpenOutput)
|
if ($rOpenOutput) {
|
||||||
{
|
$bResult = (false !== \MailSo\Base\Utils::WriteStream($rSource, $rOpenOutput));
|
||||||
$bResult = (false !== \MailSo\Base\Utils::MultipleStreamWriter($rSource, array($rOpenOutput)));
|
|
||||||
\fclose($rOpenOutput);
|
\fclose($rOpenOutput);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue