From cf89a29cb4b27b333596a2297eb30b55c17c28ab Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Wed, 2 Feb 2022 14:34:10 +0000 Subject: [PATCH] Issue #3261265 by andypost, longwave: Remove deprecated MimeTypeGuesser code --- core/core.services.yml | 2 + core/lib/Drupal/Core/CoreServiceProvider.php | 2 - .../Compiler/MimeTypePass.php | 58 ------------------- .../MimeType/ExtensionMimeTypeGuesser.php | 8 --- .../Core/File/MimeType/MimeTypeGuesser.php | 8 --- .../MimeType/ExtensionMimeTypeGuesser.php | 8 --- .../File/MimeType/MimeTypeGuesser.php | 8 --- .../Controller/CKEditor5ImageController.php | 8 +-- core/modules/file/file.module | 9 +-- core/modules/file/src/Entity/File.php | 10 +--- .../FieldFormatter/FileMediaFormatterBase.php | 9 +-- .../rest/resource/FileUploadResource.php | 9 +-- .../src/Plugin/Field/FieldType/ImageItem.php | 9 +-- .../TemporaryJsonapiFileFieldUploader.php | 9 +-- .../responsive_image/responsive_image.module | 8 +-- .../system/src/Form/ThemeSettingsForm.php | 9 +-- 16 files changed, 11 insertions(+), 163 deletions(-) delete mode 100644 core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php diff --git a/core/core.services.yml b/core/core.services.yml index 33555a617c2c..f8f73a764ff1 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -1585,6 +1585,8 @@ services: file.mime_type.guesser: class: Drupal\Core\File\MimeType\MimeTypeGuesser arguments: ['@stream_wrapper_manager'] + tags: + - { name: service_collector, tag: mime_type_guesser, call: addMimeTypeGuesser } lazy: true file.mime_type.guesser.extension: class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser diff --git a/core/lib/Drupal/Core/CoreServiceProvider.php b/core/lib/Drupal/Core/CoreServiceProvider.php index 2c90f6fbc824..90488703d6a0 100644 --- a/core/lib/Drupal/Core/CoreServiceProvider.php +++ b/core/lib/Drupal/Core/CoreServiceProvider.php @@ -19,7 +19,6 @@ use Drupal\Core\DependencyInjection\ServiceProviderInterface; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\Compiler\ModifyServiceDefinitionsPass; -use Drupal\Core\DependencyInjection\Compiler\MimeTypePass; use Drupal\Core\DependencyInjection\Compiler\TaggedHandlersPass; use Drupal\Core\DependencyInjection\Compiler\RegisterEventSubscribersPass; use Drupal\Core\DependencyInjection\Compiler\RegisterAccessChecksPass; @@ -74,7 +73,6 @@ public function register(ContainerBuilder $container) { // Collect tagged handler services as method calls on consumer services. $container->addCompilerPass(new TaggedHandlersPass()); - $container->addCompilerPass(new MimeTypePass()); $container->addCompilerPass(new RegisterStreamWrappersPass()); $container->addCompilerPass(new TwigExtensionPass()); diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php deleted file mode 100644 index 6c0380a310a5..000000000000 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -namespace Drupal\Core\DependencyInjection\Compiler; - -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Exception\LogicException; -use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\Mime\MimeTypeGuesserInterface; - -/** - * Adds @mime_type_guesser tagged services to handle forwards compatibility. - * - * @internal - * - * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. No direct - * replacement is provided. - * - * @see https://www.drupal.org/node/3133341 - */ -class MimeTypePass implements CompilerPassInterface { - - /** - * {@inheritdoc} - */ - public function process(ContainerBuilder $container) { - $consumer = $container->getDefinition('file.mime_type.guesser'); - - $tag = 'mime_type_guesser'; - $interface = MimeTypeGuesserInterface::class; - - // Find all tagged handlers. - $handlers = []; - foreach ($container->findTaggedServiceIds($tag) as $id => $attributes) { - // Validate the interface. - $handler = $container->getDefinition($id); - if (!is_subclass_of($handler->getClass(), $interface)) { - throw new LogicException("Service '$id' does not implement $interface."); - } - $handlers[$id] = $attributes[0]['priority'] ?? 0; - $interfaces[$id] = $handler->getClass(); - } - if (empty($handlers)) { - throw new LogicException(sprintf("At least one service tagged with '%s' is required.", $tag)); - } - - // Sort all handlers by priority. - arsort($handlers, SORT_NUMERIC); - - // Add a method call for each handler to the consumer service - // definition. - foreach ($handlers as $id => $priority) { - $arguments = [new Reference($id), $priority]; - $consumer->addMethodCall('addMimeTypeGuesser', $arguments); - } - } - -} diff --git a/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php b/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php index 57b7468c1467..552d4b943bc1 100644 --- a/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php +++ b/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php @@ -885,14 +885,6 @@ public function __construct(ModuleHandlerInterface $module_handler) { $this->moduleHandler = $module_handler; } - /** - * {@inheritdoc} - */ - public function guess($path) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use ::guessMimeType() instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - return $this->guessMimeType($path); - } - /** * {@inheritdoc} */ diff --git a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php index dab20cabfbed..07ffec91dd38 100644 --- a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php +++ b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php @@ -74,14 +74,6 @@ public function guessMimeType(string $path) : ?string { return NULL; } - /** - * {@inheritdoc} - */ - public function guess($path) { - @trigger_error(__METHOD__ . '() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use ::guessMimeType() instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - return $this->guessMimeType($path); - } - /** * Appends a MIME type guesser to the guessers chain. * diff --git a/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php b/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php index 8cb8b4f59cc8..2cb59856a952 100644 --- a/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php +++ b/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php @@ -67,14 +67,6 @@ protected function lazyLoadItself() return $this->service; } - /** - * {@inheritdoc} - */ - public function guess($path) - { - return $this->lazyLoadItself()->guess($path); - } - /** * {@inheritdoc} */ diff --git a/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php b/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php index 1bea10a4c82c..0a259a396c09 100644 --- a/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php +++ b/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php @@ -75,14 +75,6 @@ public function guessMimeType(string $path): ?string return $this->lazyLoadItself()->guessMimeType($path); } - /** - * {@inheritdoc} - */ - public function guess($path) - { - return $this->lazyLoadItself()->guess($path); - } - /** * {@inheritdoc} */ diff --git a/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php index 9d4a6c674e9c..e24c3484349e 100644 --- a/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php +++ b/core/modules/ckeditor5/src/Controller/CKEditor5ImageController.php @@ -171,13 +171,7 @@ public function upload(Request $request) { $file = File::create([]); $file->setOwnerId($this->currentUser->id()); $file->setFilename($prepared_filename); - if ($this->mimeTypeGuesser instanceof MimeTypeGuesserInterface) { - $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); - } - else { - $file->setMimeType($this->mimeTypeGuesser->guess($prepared_filename)); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); $file->setFileUri($file_uri); $file->setSize(@filesize($temp_file_path)); diff --git a/core/modules/file/file.module b/core/modules/file/file.module index 59c5acbcc54e..269a6d43088c 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -33,7 +33,6 @@ use Symfony\Component\HttpFoundation\File\Exception\IniSizeFileException; use Symfony\Component\HttpFoundation\File\Exception\NoFileException; use Symfony\Component\HttpFoundation\File\Exception\PartialFileException; -use Symfony\Component\Mime\MimeTypeGuesserInterface; // cspell:ignore abiword @@ -1050,13 +1049,7 @@ function _file_save_upload_single(\SplFileInfo $file_info, $form_field_name, $va } $guesser = \Drupal::service('file.mime_type.guesser'); - if ($guesser instanceof MimeTypeGuesserInterface) { - $file->setMimeType($guesser->guessMimeType($values['filename'])); - } - else { - $file->setMimeType($guesser->guess($values['filename'])); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $file->setMimeType($guesser->guessMimeType($values['filename'])); $file->source = $form_field_name; // If the destination is FALSE then $replace === FILE_EXISTS_ERROR and diff --git a/core/modules/file/src/Entity/File.php b/core/modules/file/src/Entity/File.php index 57276f495e86..44a329996892 100644 --- a/core/modules/file/src/Entity/File.php +++ b/core/modules/file/src/Entity/File.php @@ -10,7 +10,6 @@ use Drupal\Core\File\Exception\FileException; use Drupal\file\FileInterface; use Drupal\user\EntityOwnerTrait; -use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Defines the file entity class. @@ -159,14 +158,7 @@ public static function preCreate(EntityStorageInterface $storage, array &$values // Automatically detect filemime if not set. if (!isset($values['filemime']) && isset($values['uri'])) { - $guesser = \Drupal::service('file.mime_type.guesser'); - if ($guesser instanceof MimeTypeGuesserInterface) { - $values['filemime'] = $guesser->guessMimeType($values['uri']); - } - else { - $values['filemime'] = $guesser->guess($values['uri']); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $values['filemime'] = \Drupal::service('file.mime_type.guesser')->guessMimeType($values['uri']); } } diff --git a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php index 9fa11db2f69e..f55d95e65e04 100644 --- a/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php +++ b/core/modules/file/src/Plugin/Field/FieldFormatter/FileMediaFormatterBase.php @@ -8,7 +8,6 @@ use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Template\Attribute; -use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Base class for media file formatter. @@ -81,13 +80,7 @@ public static function isApplicable(FieldDefinitionInterface $field_definition) $extension_list = array_filter(preg_split('/\s+/', $field_definition->getSetting('file_extensions'))); foreach ($extension_list as $extension) { - if ($extension_mime_type_guesser instanceof MimeTypeGuesserInterface) { - $mime_type = $extension_mime_type_guesser->guessMimeType('fakedFile.' . $extension); - } - else { - $mime_type = $extension_mime_type_guesser->guess('fakedFile.' . $extension); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $mime_type = $extension_mime_type_guesser->guessMimeType('fakedFile.' . $extension); if (static::mimeTypeApplies($mime_type)) { return TRUE; } diff --git a/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php b/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php index 0d5425009c04..16f7683b9c91 100644 --- a/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php +++ b/core/modules/file/src/Plugin/rest/resource/FileUploadResource.php @@ -28,7 +28,6 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; -use Symfony\Component\Mime\MimeTypeGuesserInterface; use Symfony\Component\Routing\Route; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\HttpException; @@ -271,13 +270,7 @@ public function post(Request $request, $entity_type_id, $bundle, $field_name) { $file = File::create([]); $file->setOwnerId($this->currentUser->id()); $file->setFilename($prepared_filename); - if ($this->mimeTypeGuesser instanceof MimeTypeGuesserInterface) { - $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); - } - else { - $file->setMimeType($this->mimeTypeGuesser->guess($prepared_filename)); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); $file->setFileUri($temp_file_path); // Set the size. This is done in File::preSave() but we validate the file // before it is saved. diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php index fa6ea636e290..8992a77ab75d 100644 --- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php +++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php @@ -13,7 +13,6 @@ use Drupal\Core\TypedData\DataDefinition; use Drupal\file\Entity\File; use Drupal\file\Plugin\Field\FieldType\FileItem; -use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Plugin implementation of the 'image' field type. @@ -353,13 +352,7 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin $image->setFileUri($path); $image->setOwnerId(\Drupal::currentUser()->id()); $guesser = \Drupal::service('file.mime_type.guesser'); - if ($guesser instanceof MimeTypeGuesserInterface) { - $image->setMimeType($guesser->guessMimeType($path)); - } - else { - $image->setMimeType($guesser->guess($path)); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $image->setMimeType($guesser->guessMimeType($path)); $image->setFileName($file_system->basename($path)); $destination_dir = static::doGetUploadLocation($settings); $file_system->prepareDirectory($destination_dir, FileSystemInterface::CREATE_DIRECTORY); diff --git a/core/modules/jsonapi/src/Controller/TemporaryJsonapiFileFieldUploader.php b/core/modules/jsonapi/src/Controller/TemporaryJsonapiFileFieldUploader.php index d07b4562ec84..3b8641f7bc35 100644 --- a/core/modules/jsonapi/src/Controller/TemporaryJsonapiFileFieldUploader.php +++ b/core/modules/jsonapi/src/Controller/TemporaryJsonapiFileFieldUploader.php @@ -26,7 +26,6 @@ use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\HttpException; -use Symfony\Component\Mime\MimeTypeGuesserInterface; use Symfony\Component\Validator\ConstraintViolation; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; @@ -193,13 +192,7 @@ public function handleFileUploadForField(FieldDefinitionInterface $field_definit $file = File::create([]); $file->setOwnerId($owner->id()); $file->setFilename($prepared_filename); - if ($this->mimeTypeGuesser instanceof MimeTypeGuesserInterface) { - $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); - } - else { - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - $file->setMimeType($this->mimeTypeGuesser->guess($prepared_filename)); - } + $file->setMimeType($this->mimeTypeGuesser->guessMimeType($prepared_filename)); $file->setFileUri($temp_file_path); // Set the size. This is done in File::preSave() but we validate the file // before it is saved. diff --git a/core/modules/responsive_image/responsive_image.module b/core/modules/responsive_image/responsive_image.module index 6bd0e51f28b3..7899c7e5b8e0 100644 --- a/core/modules/responsive_image/responsive_image.module +++ b/core/modules/responsive_image/responsive_image.module @@ -13,7 +13,6 @@ use Drupal\responsive_image\Entity\ResponsiveImageStyle; use Drupal\responsive_image\ResponsiveImageStyleInterface; use Drupal\breakpoint\BreakpointInterface; -use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Implements hook_help(). @@ -478,12 +477,7 @@ function responsive_image_get_mime_type($image_style_name, $extension) { else { $fake_path = 'responsive_image.' . ImageStyle::load($image_style_name)->getDerivativeExtension($extension); } - $guesser = \Drupal::service('file.mime_type.guesser.extension'); - if (!$guesser instanceof MimeTypeGuesserInterface) { - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - return $guesser->guess($fake_path); - } - return $guesser->guessMimeType($fake_path); + return \Drupal::service('file.mime_type.guesser.extension')->guessMimeType($fake_path); } /** diff --git a/core/modules/system/src/Form/ThemeSettingsForm.php b/core/modules/system/src/Form/ThemeSettingsForm.php index a07e9e6a8fbc..00d6b28c71e9 100644 --- a/core/modules/system/src/Form/ThemeSettingsForm.php +++ b/core/modules/system/src/Form/ThemeSettingsForm.php @@ -15,7 +15,6 @@ use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Theme\ThemeManagerInterface; -use Symfony\Component\Mime\MimeTypeGuesserInterface; // cspell:ignore apng @@ -500,13 +499,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { } if (empty($values['default_favicon']) && !empty($values['favicon_path'])) { - if ($this->mimeTypeGuesser instanceof MimeTypeGuesserInterface) { - $values['favicon_mimetype'] = $this->mimeTypeGuesser->guessMimeType($values['favicon_path']); - } - else { - $values['favicon_mimetype'] = $this->mimeTypeGuesser->guess($values['favicon_path']); - @trigger_error('\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Implement \Symfony\Component\Mime\MimeTypeGuesserInterface instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - } + $values['favicon_mimetype'] = $this->mimeTypeGuesser->guessMimeType($values['favicon_path']); } theme_settings_convert_to_config($values, $config)->save(); -- GitLab