From dbdf3bde7ccf721cfc1efa4d13262bd6f444de73 Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Fri, 28 Sep 2012 22:19:37 +0200
Subject: [PATCH] Implement route for download in OC_Search_Provider_File

---
 apps/files/appinfo/routes.php | 12 ++++++++++++
 lib/route.php                 |  5 +++++
 lib/search/provider/file.php  |  3 +--
 3 files changed, 18 insertions(+), 2 deletions(-)
 create mode 100644 apps/files/appinfo/routes.php

diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php
new file mode 100644
index 0000000000..e1ab560803
--- /dev/null
+++ b/apps/files/appinfo/routes.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+$this->create('download', 'download{file}')
+	->requirements(array('file' => '.*'))
+	->actionInclude('files/download.php');
+
diff --git a/lib/route.php b/lib/route.php
index 772446e561..ba9d1724d1 100644
--- a/lib/route.php
+++ b/lib/route.php
@@ -64,4 +64,9 @@ class OC_Route extends Route {
 		$this->setDefault('action', $action);
 		return $this;
 	}
+
+	public function actionInclude($file) {
+		$function = create_function('$param', 'unset($param["_route"]);$_GET=$param;unset($param);require_once "'.$file.'";');
+		$this->action($function);
+	}
 }
diff --git a/lib/search/provider/file.php b/lib/search/provider/file.php
index 21fae0c1ce..e4e976ed7f 100644
--- a/lib/search/provider/file.php
+++ b/lib/search/provider/file.php
@@ -10,12 +10,11 @@ class OC_Search_Provider_File extends OC_Search_Provider{
 
 			$name = basename($path);
 			$text = '';
-			$path = urlencode($path);
 			if($mime=='httpd/unix-directory') {
 				$link = OC_Helper::linkTo( 'files', 'index.php', array('dir' => $path));
 				$type = 'Files';
 			}else{
-				$link = OC_Helper::linkTo( 'files', 'download.php', array('file' => $path));
+				$link = OC_Helper::linkToRoute( 'download', array('file' => $path));
 				$mimeBase = $fileData['mimepart'];
 				switch($mimeBase) {
 					case 'audio':
-- 
GitLab