From a59b5249d39e4b04da318c3f1ec43132988933cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Thu, 5 Jun 2014 13:01:01 +0200 Subject: [PATCH] add more and fix office mimetypes, migrate wrong mimetypes --- apps/files/appinfo/update.php | 57 ++++++++++++++++++++++++++++++++++ lib/private/mimetypes.list.php | 22 +++++++++++-- 2 files changed, 77 insertions(+), 2 deletions(-) diff --git a/apps/files/appinfo/update.php b/apps/files/appinfo/update.php index de635e5ce6..a993979414 100644 --- a/apps/files/appinfo/update.php +++ b/apps/files/appinfo/update.php @@ -6,3 +6,60 @@ if (version_compare(\OCP\Config::getSystemValue('version', '0.0.0'), '7.0.0', '< \OCP\Config::deleteSystemValue('allowZipDownload'); \OCP\Config::deleteSystemValue('maxZipInputSize'); } + +if (version_compare(\OCP\Config::getAppValue('files', 'installed_version'), '1.1.8', '<')) { + + // update wrong mimetypes + $wrongMimetypes = array( + 'application/mspowerpoint' => 'application/vnd.ms-powerpoint', + 'application/msexcel' => 'application/vnd.ms-excel', + ); + + $stmt = OC_DB::prepare(' + UPDATE `*PREFIX*mimetypes` + SET `mimetype` = ? + WHERE `mimetype` = ? + '); + + foreach ($wrongMimetypes as $wrong => $correct) { + OC_DB::executeAudited($stmt, array($wrong, $correct)); + } + + $updatedMimetypes = array( + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'xlsx' => 'application/vnd.ms-excel', + 'pptx' => 'application/vnd.ms-powerpoint', + ); + + // separate doc from docx etc + foreach ($updatedMimetypes as $extension => $mimetype ) { + $result = OC_DB::executeAudited(' + SELECT count(`mimetype`) + FROM `*PREFIX*mimetypes` + WHERE `mimetype` = ? + ', array($mimetype) + ); + + $exists = $result->fetchOne(); + + if ( ! $exists ) { + // insert mimetype + OC_DB::executeAudited(' + INSERT INTO `*PREFIX*mimetypes` ( `mimetype` ) + VALUES ( ? ) + ', array($mimetype) + ); + } + + // change mimetype for files with x extension + OC_DB::executeAudited(' + UPDATE `*PREFIX*filecache` + SET `mimetype` = ( + SELECT `id` + FROM `*PREFIX*mimetypes` + WHERE `mimetype` = ? + ) WHERE `name` LIKE ? + ', array($mimetype, '%.'.$extension) + ); + } +} \ No newline at end of file diff --git a/lib/private/mimetypes.list.php b/lib/private/mimetypes.list.php index 3fe454f41f..ba1b9ca10b 100644 --- a/lib/private/mimetypes.list.php +++ b/lib/private/mimetypes.list.php @@ -52,6 +52,7 @@ return array( 'c++' => array('text/x-c++src', null), 'deb' => array('application/x-deb', null), 'doc' => array('application/msword', null), + 'docm' => array('application/vnd.ms-word.document.macroEnabled.12', null), 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', null), 'dot' => array('application/msword', null), 'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.template', null), @@ -91,6 +92,7 @@ return array( 'mpg' => array('video/mpeg', null), 'msi' => array('application/x-msi', null), 'numbers' => array('application/x-iwork-numbers-sffnumbers', null), + 'odf' => array('application/vnd.oasis.opendocument.formula', null), 'odg' => array('application/vnd.oasis.opendocument.graphics', null), 'odp' => array('application/vnd.oasis.opendocument.presentation', null), 'ods' => array('application/vnd.oasis.opendocument.spreadsheet', null), @@ -104,7 +106,16 @@ return array( 'php' => array('application/x-php', null), 'pl' => array('application/x-perl', null), 'png' => array('image/png', null), - 'ppt' => array('application/mspowerpoint', null), + 'pot' => array('application/vnd.ms-powerpoint', null), + 'potm' => array('application/vnd.ms-powerpoint.template.macroEnabled.12', null), + 'potx' => array('application/vnd.openxmlformats-officedocument.presentationml.template', null), + 'ppa' => array('application/vnd.ms-powerpoint', null), + 'ppam' => array('application/vnd.ms-powerpoint.addin.macroEnabled.12', null), + 'pps' => array('application/vnd.ms-powerpoint', null), + 'ppsm' => array('application/vnd.ms-powerpoint.slideshow.macroEnabled.12', null), + 'ppsx' => array('application/vnd.openxmlformats-officedocument.presentationml.slideshow', null), + 'ppt' => array('application/vnd.ms-powerpoint', null), + 'pptm' => array('application/vnd.ms-powerpoint.presentation.macroEnabled.12', null), 'pptx' => array('application/vnd.openxmlformats-officedocument.presentationml.presentation', null), 'psd' => array('application/x-photoshop', null), 'py' => array('text/x-python', null), @@ -130,8 +141,15 @@ return array( 'woff' => array('application/font-woff', null), 'wmv' => array('video/x-ms-asf', null), 'xcf' => array('application/x-gimp', null), - 'xls' => array('application/msexcel', null), + 'xla' => array('application/vnd.ms-excel', null), + 'xlam' => array('application/vnd.ms-excel.addin.macroEnabled.12', null), + 'xls' => array('application/vnd.ms-excel', null), + 'xlsb' => array('application/vnd.ms-excel.sheet.binary.macroEnabled.12', null), + 'xlsm' => array('application/vnd.ms-excel.sheet.macroEnabled.12', null), 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', null), + 'xlt' => array('application/vnd.ms-excel', null), + 'xltm' => array('application/vnd.ms-excel.template.macroEnabled.12', null), + 'xltx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.template', null), 'xml' => array('application/xml', 'text/plain'), 'zip' => array('application/zip', null), );