summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_sharing/public.php6
-rw-r--r--lib/files.php16
2 files changed, 16 insertions, 6 deletions
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index e345b91e293..1da972ad7e3 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -141,7 +141,9 @@ if (isset($path)) {
OCP\Util::addscript('files', 'keyboardshortcuts');
$files = array();
$rootLength = strlen($basePath) + 1;
+ $totalSize = 0;
foreach (\OC\Files\Filesystem::getDirectoryContent($path) as $i) {
+ $totalSize += $i['size'];
$i['date'] = OCP\Util::formatDate($i['mtime']);
if ($i['type'] == 'file') {
$fileinfo = pathinfo($i['name']);
@@ -188,7 +190,9 @@ if (isset($path)) {
$folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
$folder->assign('usedSpacePercent', 0);
$tmpl->assign('folder', $folder->fetchPage());
- $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+ $allowZip = OCP\Config::getSystemValue('allowZipDownload', true)
+ && $totalSize <= OCP\Config::getSystemValue('maxZipInputSize', OCP\Util::computerFileSize('800 MB'));
+ $tmpl->assign('allowZipDownload', intval($allowZip));
$tmpl->assign('downloadURL',
OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath));
} else {
diff --git a/lib/files.php b/lib/files.php
index 447ffb50577..71bb21851b6 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -219,12 +219,18 @@ class OC_Files {
$zipLimit = OC_Config::getValue('maxZipInputSize', OC_Helper::computerFileSize('800 MB'));
if ($zipLimit > 0) {
$totalsize = 0;
- if (is_array($files)) {
- foreach ($files as $file) {
- $totalsize += \OC\Files\Filesystem::filesize($dir . '/' . $file);
+ if(!is_array($files)) {
+ $files = array($files);
+ }
+ foreach ($files as $file) {
+ $path = $dir . '/' . $file;
+ if(\OC\Files\Filesystem::is_dir($path)) {
+ foreach (\OC\Files\Filesystem::getDirectoryContent($path) as $i) {
+ $totalsize += $i['size'];
+ }
+ } else {
+ $totalsize += \OC\Files\Filesystem::filesize($path);
}
- } else {
- $totalsize += \OC\Files\Filesystem::filesize($dir . '/' . $files);
}
if ($totalsize > $zipLimit) {
$l = OC_L10N::get('lib');