From f971ce0b66ba32b1946df493ab5a937e4a778548 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= <schiessle@owncloud.com>
Date: Wed, 13 Mar 2013 11:15:17 +0100
Subject: [PATCH] let public link download handle json encoded file lists

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

diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index a4ef41c280..82069e3bc5 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -226,7 +226,7 @@ $(document).ready(function() {
 		OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
 		// use special download URL if provided, e.g. for public shared files
 		if ( (downloadURL = document.getElementById("downloadURL")) ) {
-			window.location=downloadURL.value+"&download&files="+files;
+			window.location=downloadURL.value+"&download&files="+encodeURIComponent(fileslist);
 		} else {
 			window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: fileslist });
 		}
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index 1da972ad7e..c8aca498f8 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -113,7 +113,13 @@ if (isset($path)) {
 	// Download the file
 	if (isset($_GET['download'])) {
 		if (isset($_GET['files'])) { // download selected files
-			OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+			$files = urldecode($_GET['files']);
+			$files_list = json_decode($files);
+			// in case we get only a single file
+			if ($files_list === NULL ) {
+				$files_list = array($files);
+			}
+			OC_Files::get($path, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
 		} else {
 			OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
 		}
-- 
GitLab