From 5e2bce24b4d7576f2503edb762afd6cbe3caccea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= <schiessle@owncloud.com>
Date: Fri, 5 Oct 2012 16:12:04 +0200
Subject: [PATCH] enable user to download selected files from publically shared
 directory

---
 apps/files/js/files.js        | 7 ++++++-
 apps/files_sharing/public.php | 4 +++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 414dfb03cd..e403745452 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -178,7 +178,12 @@ $(document).ready(function() {
 		var dir=$('#dir').val()||'/';
 		$('#notification').text(t('files','generating ZIP-file, it may take some time.'));
 		$('#notification').fadeIn();
-		window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: files });
+		// use special download URL if provided, e.g. for public shared files
+		if ( (downloadURL = document.getElementById("downloadURL")) ) {
+			window.location=downloadURL.value+"&download&files="+files;
+		} else {
+			window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: files });
+		}
 		return false;
 	});
 
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index 67b2dca8c9..34340102a9 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -83,7 +83,9 @@ if (isset($_GET['file']) || isset($_GET['dir'])) {
 			// Download the file
 			if (isset($_GET['download'])) {
 				if (isset($_GET['dir'])) {
-					if (isset($_GET['path']) &&  $_GET['path'] != '' ) { // download a file from a shared directory
+					if ( isset($_GET['files']) ) { // download selected files
+						OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+					} else 	if (isset($_GET['path']) &&  $_GET['path'] != '' ) { // download a file from a shared directory
 						OC_Files::get('', $path, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
 					} else { // download the whole shared directory
 						OC_Files::get($path, '', $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
-- 
GitLab