]> source.dussan.org Git - nextcloud-server.git/commitdiff
move list of mimetypes by extention to a seperate file.
authorRobin Appelman <icewind1991@gmail.com>
Sun, 17 Jul 2011 13:22:04 +0000 (15:22 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Sun, 17 Jul 2011 15:41:46 +0000 (17:41 +0200)
lib/filestorage.php
lib/mimetypes.list.php [new file with mode: 0644]

index 819ad2e60b3a2bff73075aab66b6b7c5d558eae0..c2614dc5dcf9e891115b33ba7fb9d06dceb5815c 100644 (file)
@@ -65,6 +65,7 @@ OC_FILESYSTEM::registerStorageType('local','OC_FILESTORAGE_LOCAL',array('datadir
  */
 class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
        private $datadir;
+       private static $mimetypes=null;
        public function __construct($arguments){
                $this->datadir=$arguments['datadir'];
                if(substr($this->datadir,-1)!=='/'){
@@ -209,71 +210,14 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
                                $mime_type=substr($reply,0,strrpos($reply,' '));
                        }
                        if (empty($mime_type)) {
-                               // Fallback solution: try to guess the type by the file extension
-                               // TODO: add more ...
-                               switch (strtolower(strrchr(basename($fspath), "."))) {
-                                       case '.css':
-                                               $mime_type = 'text/css';
-                                               break;
-                                       case '.flac':
-                                               $mime_type = 'audio/flac';
-                                               break;
-                                       case '.gif':
-                                               $mime_type = 'image/gif';
-                                               break;
-                                       case '.gzip':
-                                       case '.gz':
-                                               $mime_type = 'application/x-gzip';
-                                               break;
-                                       case '.htm':
-                                       case '.html':
-                                               $mime_type = 'text/html';
-                                               break;
-                                       case '.jpeg':
-                                       case '.jpg':
-                                               $mime_type = 'image/jpeg';
-                                               break;
-                                       case '.js':
-                                               $mime_type = 'application/x-javascript';
-                                               break;
-                                       case '.oga':
-                                       case '.ogg':
-                                               $mime_type = 'audio/ogg';
-                                               break;
-                                       case '.ogv':
-                                               $mime_type = 'video/ogg';
-                                               break;
-                                       case '.pdf':
-                                               $mime_type = 'application/pdf';
-                                               break;
-                                       case '.png':
-                                               $mime_type = 'image/png';
-                                               break;
-                                       case '.svg':
-                                               $mime_type = 'image/svg+xml';
-                                               break;
-                                       case '.tar':
-                                               $mime_type = 'application/x-tar';
-                                               break;
-                                       case '.tgz':
-                                               $mime_type = 'application/x-compressed';
-                                               break;
-                                       case '.tif':
-                                       case '.tiff':
-                                               $mime_type = 'image/tiff';
-                                               break;
-                                       case '.txt':
-                                               $mime_type = 'text/plain';
-                                               break;
-                                       case '.zip':
-                                               $mime_type = 'application/zip';
-                                               break;
-                                       default:
-                                               $mime_type = 'application/octet-stream';
-                                               break;
+                               // Fallback solution: (try to guess the type by the file extension
+                               if(!self::$mimetypes){
+                                       self::$mimetypes=include('mimetypes.list.php');
                                }
+                               $extention=strtolower(strrchr(basename($fspath), "."));
+                               $extention=substr($extention,1);//remove leading .
+                               $mime_type=(isset(self::$mimetypes[$extention]))?self::$mimetypes[$extention]:'application/octet-stream';
                        }
-
                        return $mime_type;
                }
        }
diff --git a/lib/mimetypes.list.php b/lib/mimetypes.list.php
new file mode 100644 (file)
index 0000000..6d8b3b9
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+* ownCloud
+*
+* @author Robin Appelman
+* @copyright 2011 Robin Appelman icewind1991@gmail.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/>.
+*
+*/
+
+/**
+ * list of mimetypes by extention
+ */
+
+return array(
+       'css'=>'text/css',
+       'flac'=>'audio/flac',
+       'gif'=>'image/gif',
+       'gzip'=>'application/x-gzip',
+       'gz'=>'application/x-gzip',
+       'html'=>'text/html',
+       'htm'=>'text/html',
+       'jpeg'=>'image/jpeg',
+       'jpg'=>'image/jpeg',
+       'js'=>'application/javascript',
+       'oga'=>'audio/ogg',
+       'ogg'=>'audio/ogg',
+       'ogv'=>'video/ogg',
+       'pdf'=>'application/pdf',
+       'png'=>'image/png',
+       'svg'=>'image/svg+xml',
+       'tar'=>'application/x-tar',
+       'tgz'=>'application/x-compressed',
+       'tar.gz'=>'application/x-compressed',
+       'tif'=>'image/tiff',
+       'tiff'=>'image/tiff',
+       'txt'=>'text/plain',
+       'zip'=>'application/zip',
+       'wav'=>'audio/wav',
+       'odt'=>'application/vnd.oasis.opendocument.text',
+       'ods'=>'application/vnd.oasis.opendocument.spreadsheet',
+       'odg'=>'application/vnd.oasis.opendocument.graphics',
+       'odp'=>'application/vnd.oasis.opendocument.presentation',
+       'kra'=>'application/x-krita',
+       'mp3'=>'audio/mpeg',
+       'doc'=>'application/msword',
+       'docx'=>'application/msword',
+       'xls'=>'application/msexcel',
+       'xlsx'=>'application/msexcel',
+       'php'=>'application/x-php',
+       'exe'=>'application/x-ms-dos-executable',
+       'pl'=>'application/x-pearl',
+       'py'=>'application/x-python',
+       'blend'=>'application/x-blender',
+       'xcf'=>'application/x-gimp',
+       'psd'=>'application/x-photoshop',
+       'xml'=>'application/xml',
+       'avi'=>'video/x-msvideo',
+       'dv'=>'video/dv',
+       'm2t'=>'video/mp2t',
+       'mp4'=>'video/mp4',
+       'm4v'=>'video/mp4',
+       'mpg'=>'video/mpeg',
+       'mpeg'=>'video/mpeg',
+       'mov'=>'video/quicktime',
+       'webm'=>'video/webm',
+       'wmv'=>'video/x-ms-asf'
+);
+?>
\ No newline at end of file