summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-10-12 15:08:19 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2015-10-12 15:08:19 +0200
commit64a8d016946560182f107e48b9fcc81e517b6945 (patch)
tree59b9a34791fa1da98aff62ebb8c718ae1ad03c7f
parenteb445103e9caaaba41e30b4e53379aa6030ac65d (diff)
parent8098c06e708ba24a5beccd7a85572c7990c9a3f5 (diff)
downloadnextcloud-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.php13
-rw-r--r--tests/lib/repair/repairmimetypes.php17
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);
+ }
}