mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-28 19:49:20 +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 $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) && \count($aWrite)) {
|
||||
$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 (!\is_resource($rRead) || !\is_resource($rWrite)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ($mResult && $bRewindOnComplete) {
|
||||
foreach ($aWrite as $rWriteStream) {
|
||||
if (\is_resource($rWriteStream)) {
|
||||
\rewind($rWriteStream);
|
||||
}
|
||||
$iResult = 0;
|
||||
|
||||
while (!\feof($rRead)) {
|
||||
$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
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ trait Messages
|
|||
{
|
||||
$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('');
|
||||
$oResponses = $this->getResponse();
|
||||
|
|
|
|||
|
|
@ -152,15 +152,12 @@ trait Attachments
|
|||
|
||||
unset($sContentType, $sFileName, $sMimeIndex);
|
||||
|
||||
if (\is_resource($rResource))
|
||||
{
|
||||
if (\is_resource($rResource)) {
|
||||
$sHash = \MailSo\Base\Utils::Sha1Rand($sFileNameIn.'~'.$sContentTypeIn);
|
||||
$rTempResource = $oFileProvider->GetFile($oAccount, $sHash, 'wb+');
|
||||
|
||||
if (\is_resource($rTempResource))
|
||||
{
|
||||
if (false !== \MailSo\Base\Utils::MultipleStreamWriter($rResource, array($rTempResource)))
|
||||
{
|
||||
if (\is_resource($rTempResource)) {
|
||||
if (-1 < \MailSo\Base\Utils::WriteStream($rResource, $rTempResource)) {
|
||||
$sResultHash = $sHash;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,8 +113,7 @@ trait Messages
|
|||
if ($oMessage) {
|
||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
||||
$oMessage->ToStream(false), array($rMessageStream), 8192, true, true);
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream($oMessage->ToStream(false), $rMessageStream, 8192, true);
|
||||
|
||||
if (false !== $iMessageStreamSize) {
|
||||
$sMessageId = $oMessage->MessageId();
|
||||
|
|
@ -168,8 +167,9 @@ trait Messages
|
|||
if ($oMessage) {
|
||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
||||
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
|
||||
);
|
||||
|
||||
if (false !== $iMessageStreamSize) {
|
||||
$bDsn = !empty($this->GetActionParam('dsn', 0));
|
||||
|
|
@ -217,8 +217,9 @@ trait Messages
|
|||
} else {
|
||||
$rAppendMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||
|
||||
$iAppendMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
||||
$oMessage->ToStream(false), array($rAppendMessageStream), 8192, true, true, true);
|
||||
$iAppendMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||
$oMessage->ToStream(false), $rAppendMessageStream, 8192, true, true
|
||||
);
|
||||
|
||||
$this->Plugins()->RunHook('filter.send-message-stream',
|
||||
array($oAccount, &$rAppendMessageStream, &$iAppendMessageStreamSize));
|
||||
|
|
@ -317,8 +318,9 @@ trait Messages
|
|||
if ($oMessage) {
|
||||
$rMessageStream = \MailSo\Base\ResourceRegistry::CreateMemoryResource();
|
||||
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::MultipleStreamWriter(
|
||||
$oMessage->ToStream(true), array($rMessageStream), 8192, true, true, true);
|
||||
$iMessageStreamSize = \MailSo\Base\Utils::WriteStream(
|
||||
$oMessage->ToStream(true), $rMessageStream, 8192, true, true
|
||||
);
|
||||
|
||||
if (false !== $iMessageStreamSize) {
|
||||
$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
|
||||
{
|
||||
$bResult = false;
|
||||
if ($rSource)
|
||||
{
|
||||
if ($rSource) {
|
||||
$rOpenOutput = \fopen($this->generateFullFileName($oAccount, $sKey, true), 'w+b');
|
||||
if ($rOpenOutput)
|
||||
{
|
||||
$bResult = (false !== \MailSo\Base\Utils::MultipleStreamWriter($rSource, array($rOpenOutput)));
|
||||
if ($rOpenOutput) {
|
||||
$bResult = (false !== \MailSo\Base\Utils::WriteStream($rSource, $rOpenOutput));
|
||||
\fclose($rOpenOutput);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue