Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);
+ }
}