mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-08 08:57:03 +03:00
Use PharData to create Zip when ZipArchive is not available
This commit is contained in:
parent
e3376c244e
commit
15631427b0
3 changed files with 35 additions and 19 deletions
|
|
@ -717,8 +717,8 @@ class MessageViewMailBoxUserView extends AbstractViewRight {
|
||||||
if (hashes.length) {
|
if (hashes.length) {
|
||||||
Remote.attachmentsActions('Zip', hashes, this.downloadAsZipLoading)
|
Remote.attachmentsActions('Zip', hashes, this.downloadAsZipLoading)
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
if (result && result.Result && result.Result.Files && result.Result.Files[0] && result.Result.Files[0].Hash) {
|
if (result && result.Result && result.Result.FileHash) {
|
||||||
rl.app.download(attachmentDownload(result.Result.Files[0].Hash));
|
rl.app.download(attachmentDownload(result.Result.FileHash));
|
||||||
} else {
|
} else {
|
||||||
this.downloadAsZipError(true);
|
this.downloadAsZipError(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -989,7 +989,7 @@ class Actions
|
||||||
|
|
||||||
$aAttachmentsActions = array();
|
$aAttachmentsActions = array();
|
||||||
if ($this->GetCapa(false, $bMobile, Enumerations\Capa::ATTACHMENTS_ACTIONS)) {
|
if ($this->GetCapa(false, $bMobile, Enumerations\Capa::ATTACHMENTS_ACTIONS)) {
|
||||||
if (\class_exists('ZipArchive')) {
|
if (\class_exists('PharData') || \class_exists('ZipArchive')) {
|
||||||
$aAttachmentsActions[] = 'zip';
|
$aAttachmentsActions[] = 'zip';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,13 +131,11 @@ trait User
|
||||||
{
|
{
|
||||||
case 'zip':
|
case 'zip':
|
||||||
|
|
||||||
if (\class_exists('ZipArchive'))
|
$sZipHash = \MailSo\Base\Utils::Md5Rand();
|
||||||
{
|
$sZipFileName = $oFilesProvider->GenerateLocalFullFileName($oAccount, $sZipHash);
|
||||||
$sZipHash = \MailSo\Base\Utils::Md5Rand();
|
|
||||||
$sZipFileName = $oFilesProvider->GenerateLocalFullFileName($oAccount, $sZipHash);
|
|
||||||
|
|
||||||
if (!empty($sZipFileName))
|
if (!empty($sZipFileName)) {
|
||||||
{
|
if (\class_exists('ZipArchive')) {
|
||||||
$oZip = new \ZipArchive();
|
$oZip = new \ZipArchive();
|
||||||
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
|
$oZip->open($sZipFileName, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE);
|
||||||
$oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
|
$oZip->setArchiveComment('SnappyMail/'.APP_VERSION);
|
||||||
|
|
@ -165,12 +163,33 @@ trait User
|
||||||
{
|
{
|
||||||
$oZip->close();
|
$oZip->close();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
@\unlink($sZipFileName);
|
||||||
|
$oZip = new \PharData($sZipFileName . '.zip', 0, null, \Phar::ZIP);
|
||||||
|
$oZip->compressFiles(\Phar::GZ);
|
||||||
|
|
||||||
|
foreach ($aData as $aItem)
|
||||||
|
{
|
||||||
|
$sFileName = (isset($aItem['FileName']) ? (string) $aItem['FileName'] : 'file.dat');
|
||||||
|
$sFileHash = (isset($aItem['FileHash']) ? (string) $aItem['FileHash'] : '');
|
||||||
|
|
||||||
|
if ($sFileHash)
|
||||||
|
{
|
||||||
|
$sFullFileNameHash = $oFilesProvider->GetFileName($oAccount, $sFileHash);
|
||||||
|
$oZip->addFile($sFullFileNameHash, $sFileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$oZip->compressFiles(\Phar::GZ);
|
||||||
|
|
||||||
|
unset($oZip);
|
||||||
|
\rename($sZipFileName . '.zip', $sZipFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($aData as $aItem)
|
foreach ($aData as $aItem)
|
||||||
{
|
{
|
||||||
$sFileHash = (string) (isset($aItem['FileHash']) ? $aItem['FileHash'] : '');
|
$sFileHash = (isset($aItem['FileHash']) ? (string) $aItem['FileHash'] : '');
|
||||||
if (!empty($sFileHash))
|
if ($sFileHash)
|
||||||
{
|
{
|
||||||
$oFilesProvider->Clear($oAccount, $sFileHash);
|
$oFilesProvider->Clear($oAccount, $sFileHash);
|
||||||
}
|
}
|
||||||
|
|
@ -179,15 +198,12 @@ trait User
|
||||||
if (!$bError)
|
if (!$bError)
|
||||||
{
|
{
|
||||||
$mResult = array(
|
$mResult = array(
|
||||||
'Files' => array(array(
|
'FileHash' => Utils::EncodeKeyValuesQ(array(
|
||||||
|
'V' => APP_VERSION,
|
||||||
|
'Account' => $oAccount ? \md5($oAccount->Hash()) : '',
|
||||||
'FileName' => 'attachments.zip',
|
'FileName' => 'attachments.zip',
|
||||||
'Hash' => Utils::EncodeKeyValuesQ(array(
|
'MimeType' => 'application/zip',
|
||||||
'V' => APP_VERSION,
|
'FileHash' => $sZipHash
|
||||||
'Account' => $oAccount ? \md5($oAccount->Hash()) : '',
|
|
||||||
'FileName' => 'attachments.zip',
|
|
||||||
'MimeType' => 'application/zip',
|
|
||||||
'FileHash' => $sZipHash
|
|
||||||
))
|
|
||||||
))
|
))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue