]> source.dussan.org Git - nextcloud-server.git/commitdiff
Moved content disposition code+workarounds to OCP\Response
authorVincent Petry <pvince81@owncloud.com>
Tue, 10 Dec 2013 11:05:39 +0000 (12:05 +0100)
committerVincent Petry <pvince81@owncloud.com>
Tue, 10 Dec 2013 11:42:26 +0000 (12:42 +0100)
Added new OC\Response API called setContentDispositionHeader() that
contains the needed workarounds for UTF8 and IE.

Refactored download code to use the new API.

Removed unused trashbin download file.

apps/files/download.php
apps/files_trashbin/download.php [deleted file]
apps/files_versions/download.php
lib/private/files.php
lib/private/response.php
lib/public/response.php

index e3fe24e45d733398f8fb9ae67585b911db544c58..6b055e99a537dfea6f3b89b946c075f6c112f4c2 100644 (file)
@@ -37,12 +37,7 @@ if(!\OC\Files\Filesystem::file_exists($filename)) {
 $ftype=\OC\Files\Filesystem::getMimeType( $filename );
 
 header('Content-Type:'.$ftype);
-if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
-       header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
-} else {
-       header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
-                                                                                . '; filename="' . rawurlencode( basename($filename) ) . '"' );
-}
+OCP\Response::setContentDispositionHeader(basename($filename), 'attachment');
 OCP\Response::disableCaching();
 header('Content-Length: '.\OC\Files\Filesystem::filesize($filename));
 
diff --git a/apps/files_trashbin/download.php b/apps/files_trashbin/download.php
deleted file mode 100644 (file)
index 60328e1..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-
-/**
-* ownCloud - trash bin
-*
-* @author Bjoern Schiessle
-* @copyright 2013 Bjoern Schiessle schiessle@owncloud.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-// Check if we are a user
-OCP\User::checkLoggedIn();
-
-$filename = $_GET["file"];
-
-$view = new OC_FilesystemView('/'.\OCP\User::getUser().'/files_trashbin/files');
-
-if(!$view->file_exists($filename)) {
-       header("HTTP/1.0 404 Not Found");
-       $tmpl = new OCP\Template( '', '404', 'guest' );
-       $tmpl->assign('file', $filename);
-       $tmpl->printPage();
-       exit;
-}
-
-$ftype=$view->getMimeType( $filename );
-
-header('Content-Type:'.$ftype);if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
-       header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
-} else {
-       header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
-                                                                                . '; filename="' . rawurlencode( basename($filename) ) . '"' );
-}
-OCP\Response::disableCaching();
-header('Content-Length: '. $view->filesize($filename));
-
-OC_Util::obEnd();
-$view->readfile( $filename );
index 040a662e61bf70511d7fdffa716d462d8d812a4e..2fe56d2e6383e4089729b9d53f3b4409c0ced431 100644 (file)
@@ -36,12 +36,7 @@ $view = new OC\Files\View('/');
 $ftype = $view->getMimeType('/'.$uid.'/files/'.$filename);
 
 header('Content-Type:'.$ftype);
-if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
-       header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
-} else {
-       header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
-                                                                                . '; filename="' . rawurlencode( basename($filename) ) . '"' );
-}
+OCP\Response::setContentDispositionHeader(basename($filename), 'attachment');
 OCP\Response::disableCaching();
 header('Content-Length: '.$view->filesize($versionName));
 
index 6ffa14c0d91b83169220771802b97283f3495163..e6c81d58bd21043416d340b9937ad1ae56d45c80 100644 (file)
@@ -115,12 +115,7 @@ class OC_Files {
                }
                OC_Util::obEnd();
                if ($zip or \OC\Files\Filesystem::isReadable($filename)) {
-                       if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
-                               header( 'Content-Disposition: attachment; filename="' . rawurlencode($name) . '"' );
-                       } else {
-                               header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($name)
-                                                                                                        . '; filename="' . rawurlencode($name) . '"' );
-                       }
+                       OC_Response::setContentDispositionHeader($name, 'attachment');
                        header('Content-Transfer-Encoding: binary');
                        OC_Response::disableCaching();
                        if ($zip) {
index 674176d078b2ffa34b78808560b77c13990b7a86..1b9cb473d67a12eba0f0ab4f98d4b171d692ad02 100644 (file)
@@ -147,6 +147,20 @@ class OC_Response {
                header('Last-Modified: '.$lastModified);
        }
 
+       /**
+        * Sets the content disposition header (with possible workarounds)
+        * @param string $filename file name
+        * @param string $type disposition type, either 'attachment' or 'inline'
+        */
+       static public function setContentDispositionHeader( $filename, $type = 'attachment' ) {
+               if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
+                       header( 'Content-Disposition: ' . rawurlencode($type) . '; filename="' . rawurlencode( $filename ) . '"' );
+               } else {
+                       header( 'Content-Disposition: ' . rawurlencode($type) . '; filename*=UTF-8\'\'' . rawurlencode( $filename )
+                                                                                                . '; filename="' . rawurlencode( $filename ) . '"' );
+               }
+       }
+
        /**
        * @brief Send file as response, checking and setting caching headers
        * @param $filepath of file to send
index 2ca0a0c9fa41cc82edec0eca4bb8aab5632100ee..24d3c81d62807c8104be70e70de7a0bc04049f24 100644 (file)
@@ -54,6 +54,15 @@ class Response {
                \OC_Response::setLastModifiedHeader( $lastModified );
        }
 
+       /**
+        * Sets the content disposition header (with possible workarounds)
+        * @param string $filename file name
+        * @param string $type disposition type, either 'attachment' or 'inline'
+        */
+       static public function setContentDispositionHeader( $filename, $type = 'attachment' ) {
+               \OC_Response::setContentDispositionHeader( $filename, $type );
+       }
+
        /**
         * Disable browser caching
         * @see enableCaching with cache_time = 0