diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-12 15:08:19 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-12 15:08:19 +0200 |
commit | 64a8d016946560182f107e48b9fcc81e517b6945 (patch) | |
tree | 59b9a34791fa1da98aff62ebb8c718ae1ad03c7f | |
parent | eb445103e9caaaba41e30b4e53379aa6030ac65d (diff) | |
parent | 8098c06e708ba24a5beccd7a85572c7990c9a3f5 (diff) | |
download | nextcloud-server-64a8d016946560182f107e48b9fcc81e517b6945.tar.gz nextcloud-server-64a8d016946560182f107e48b9fcc81e517b6945.zip |
Merge pull request #19683 from owncloud/repair-donotrepairfoldermimetypes
Do not update mime types for folders with extension
-rw-r--r-- | lib/repair/repairmimetypes.php | 13 | ||||
-rw-r--r-- | tests/lib/repair/repairmimetypes.php | 17 |
2 files changed, 28 insertions, 2 deletions
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 @@ -36,6 +36,11 @@ class RepairMimeTypes extends BasicEmitter implements \OC\RepairStep { protected $config; /** + * @var int + */ + protected $folderMimeTypeId; + + /** * @param \OCP\IConfig $config */ public function __construct($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)); } } diff --git a/tests/lib/repair/repairmimetypes.php b/tests/lib/repair/repairmimetypes.php index 0288a476ede..a0697776e73 100644 --- a/tests/lib/repair/repairmimetypes.php +++ b/tests/lib/repair/repairmimetypes.php @@ -514,5 +514,22 @@ class RepairMimeTypes extends \Test\TestCase { $this->renameMimeTypes($currentMimeTypes, $fixedMimeTypes); } + + /** + * Test that mime type renaming does not affect folders + */ + public function testDoNotChangeFolderMimeType() { + $currentMimeTypes = [ + ['test.conf', 'httpd/unix-directory'], + ['test.cnf', 'httpd/unix-directory'], + ]; + + $fixedMimeTypes = [ + ['test.conf', 'httpd/unix-directory'], + ['test.cnf', 'httpd/unix-directory'], + ]; + + $this->renameMimeTypes($currentMimeTypes, $fixedMimeTypes); + } } |