From 8098c06e708ba24a5beccd7a85572c7990c9a3f5 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 9 Oct 2015 18:16:36 +0200 Subject: Do not update mime types for folders with extension Some folders might have an extension like "test.conf". This fix prevents to overwrite the folder's mime type with another mime type while running the mimetype repair step. --- lib/repair/repairmimetypes.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/repair/repairmimetypes.php b/lib/repair/repairmimetypes.php index aeac69d00db..3ea9e45816e 100644 --- a/lib/repair/repairmimetypes.php +++ b/lib/repair/repairmimetypes.php @@ -35,6 +35,11 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { */ protected $config; + /** + * @var int + */ + protected $folderMimeTypeId; + /** * @param \OCP\IConfig $config */ @@ -91,7 +96,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { return \OC_DB::prepare(' UPDATE `*PREFIX*filecache` SET `mimetype` = ? - WHERE `mimetype` <> ? AND `name` ILIKE ? + WHERE `mimetype` <> ? AND `mimetype` <> ? AND `name` ILIKE ? '); } @@ -124,6 +129,10 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { } private function updateMimetypes($updatedMimetypes) { + if (empty($this->folderMimeTypeId)) { + $result = \OC_DB::executeAudited(self::getIdStmt(), array('httpd/unix-directory')); + $this->folderMimeTypeId = (int)$result->fetchOne(); + } foreach ($updatedMimetypes as $extension => $mimetype) { $result = \OC_DB::executeAudited(self::existsStmt(), array($mimetype)); @@ -139,7 +148,7 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { $mimetypeId = $result->fetchOne(); // change mimetype for files with x extension - \OC_DB::executeAudited(self::updateByNameStmt(), array($mimetypeId, $mimetypeId, '%.' . $extension)); + \OC_DB::executeAudited(self::updateByNameStmt(), array($mimetypeId, $this->folderMimeTypeId, $mimetypeId, '%.' . $extension)); } } -- cgit v1.2.3