From ec3fedad1d8d13dfda498e93b5ee4cf1ae839722 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Sun, 12 Jan 2025 11:47:13 +0000 Subject: [PATCH] Issue #3466462 by mfb, chandansha, kim.pepper, charlliequadros, smustgrave, mxr576, quietone, morvaim, larowlan: Fix handling of unknown file extensions in FileMediaFormatterBase --- .../Plugin/Field/FieldFormatter/FileMediaFormatterBase.php | 7 ++++--- .../src/Functional/Formatter/FileAudioFormatterTest.php | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php index f55d95e65e04..7b749cfbce44 100644 --- a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php +++ b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php @@ -81,7 +81,7 @@ public static function isApplicable(FieldDefinitionInterface $field_definition) foreach ($extension_list as $extension) { $mime_type = $extension_mime_type_guesser->guessMimeType('fakedFile.' . $extension); - if (static::mimeTypeApplies($mime_type)) { + if ($mime_type !== NULL && static::mimeTypeApplies($mime_type)) { return TRUE; } } @@ -192,11 +192,12 @@ protected function getSourceFiles(EntityReferenceFieldItemListInterface $items, // grouping in case the multiple file behavior is not 'tags'. /** @var \Drupal\file\Entity\File $file */ foreach ($this->getEntitiesToView($items, $langcode) as $file) { - if (static::mimeTypeApplies($file->getMimeType())) { + $mime_type = $file->getMimeType(); + if ($mime_type !== NULL && static::mimeTypeApplies($mime_type)) { $source_attributes = new Attribute(); $source_attributes ->setAttribute('src', $file->createFileUrl()) - ->setAttribute('type', $file->getMimeType()); + ->setAttribute('type', $mime_type); if ($this->getSetting('multiple_file_display_type') === 'tags') { $source_files[] = [ [ diff --git a/core/modules/file/tests/src/Functional/Formatter/FileAudioFormatterTest.php b/core/modules/file/tests/src/Functional/Formatter/FileAudioFormatterTest.php index a4591ed353c9..316860c84e2d 100644 --- a/core/modules/file/tests/src/Functional/Formatter/FileAudioFormatterTest.php +++ b/core/modules/file/tests/src/Functional/Formatter/FileAudioFormatterTest.php @@ -24,7 +24,8 @@ class FileAudioFormatterTest extends FileMediaFormatterTestBase { * @dataProvider dataProvider */ public function testRender($tag_count, $formatter_settings): void { - $field_config = $this->createMediaField('file_audio', 'mp3', $formatter_settings); + // Create a file field that accepts .mp3 and an unknown file extension. + $field_config = $this->createMediaField('file_audio', 'unknown-extension, mp3', $formatter_settings); file_put_contents('public://file.mp3', str_repeat('t', 10)); $file1 = File::create([ -- GitLab