diff --git a/core/modules/media_library/src/Form/AddFormBase.php b/core/modules/media_library/src/Form/AddFormBase.php index 27c17065f7..56ff257648 100644 --- a/core/modules/media_library/src/Form/AddFormBase.php +++ b/core/modules/media_library/src/Form/AddFormBase.php @@ -12,8 +12,6 @@ use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; -use Drupal\file\FileInterface; -use Drupal\file\FileUsage\FileUsageInterface; use Drupal\media\MediaInterface; use Drupal\media\MediaTypeInterface; use Drupal\media_library\Ajax\UpdateSelectionCommand; @@ -66,13 +64,6 @@ abstract class AddFormBase extends FormBase { */ protected $openerResolver; - /** - * The file usage service. - * - * @var \Drupal\file\FileUsage\FileUsageInterface - */ - protected $fileUsage; - /** * Constructs a AddFormBase object. * @@ -82,10 +73,8 @@ abstract class AddFormBase extends FormBase { * The media library UI builder. * @param \Drupal\media_library\OpenerResolverInterface $opener_resolver * The opener resolver. - * @param \Drupal\file\FileUsage\FileUsageInterface $file_usage - * The file usage service. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, OpenerResolverInterface $opener_resolver = NULL, FileUsageInterface $file_usage = NULL) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, OpenerResolverInterface $opener_resolver = NULL) { $this->entityTypeManager = $entity_type_manager; $this->libraryUiBuilder = $library_ui_builder; $this->viewBuilder = $this->entityTypeManager->getViewBuilder('media'); @@ -94,11 +83,6 @@ public function __construct(EntityTypeManagerInterface $entity_type_manager, Med $opener_resolver = \Drupal::service('media_library.opener_resolver'); } $this->openerResolver = $opener_resolver; - if (!$file_usage) { - @trigger_error('Calling AddFormBase::__construct() without the file.usage service is deprecated in drupal:8.8.0 and is required in drupal:9.0.0. See https://www.drupal.org/node/3075165', E_USER_DEPRECATED); - $file_usage = \Drupal::service('file.usage'); - } - $this->fileUsage = $file_usage; } /** @@ -572,15 +556,9 @@ public function removeButtonSubmit(array $form, FormStateInterface $form_state) $triggering_element = $form_state->getTriggeringElement(); $delta = array_slice($triggering_element['#array_parents'], -2, 1)[0]; - /** @var \Drupal\media\MediaInterface[] $added_media */ $added_media = $form_state->get('media'); $removed_media = $added_media[$delta]; - $file = $removed_media->get($this->getSourceFieldName($removed_media->bundle->entity))->entity; - if ($file instanceof FileInterface && empty($this->fileUsage->listUsage($file))) { - $file->delete(); - } - // Update the list of added media items in the form state. unset($added_media[$delta]); diff --git a/core/modules/media_library/src/Form/FileUploadForm.php b/core/modules/media_library/src/Form/FileUploadForm.php index cfdaabf0b7..7443e8bb7c 100644 --- a/core/modules/media_library/src/Form/FileUploadForm.php +++ b/core/modules/media_library/src/Form/FileUploadForm.php @@ -54,6 +54,13 @@ class FileUploadForm extends AddFormBase { */ protected $fileSystem; + /** + * The file usage service. + * + * @var \Drupal\file\FileUsage\FileUsageInterface + */ + protected $fileUsage; + /** * Constructs a new FileUploadForm. * @@ -72,11 +79,12 @@ class FileUploadForm extends AddFormBase { * @param \Drupal\file\FileUsage\FileUsageInterface $file_usage * The file usage service. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, ElementInfoManagerInterface $element_info, RendererInterface $renderer, FileSystemInterface $file_system, OpenerResolverInterface $opener_resolver = NULL, FileUsageInterface $file_usage = NULL) { - parent::__construct($entity_type_manager, $library_ui_builder, $opener_resolver, $file_usage); + public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, ElementInfoManagerInterface $element_info, RendererInterface $renderer, FileSystemInterface $file_system, OpenerResolverInterface $opener_resolver, FileUsageInterface $file_usage) { + parent::__construct($entity_type_manager, $library_ui_builder, $opener_resolver); $this->elementInfo = $element_info; $this->renderer = $renderer; $this->fileSystem = $file_system; + $this->fileUsage = $file_usage; } /** @@ -294,4 +302,30 @@ protected function prepareMediaEntityForSave(MediaInterface $media) { $file->save(); } + /** + * Submit handler for the remove button. + * + * @param array $form + * The form render array. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The form state. + */ + public function removeButtonSubmit(array $form, FormStateInterface $form_state) { + // Retrieve the delta of the media item from the parents of the remove + // button. + $triggering_element = $form_state->getTriggeringElement(); + $delta = array_slice($triggering_element['#array_parents'], -2, 1)[0]; + + /** @var \Drupal\media\MediaInterface[] $added_media */ + $added_media = $form_state->get('media'); + $removed_media = $added_media[$delta]; + + $file = $removed_media->get($this->getSourceFieldName($removed_media->bundle->entity))->entity; + if ($file instanceof FileInterface && empty($this->fileUsage->listUsage($file))) { + $file->delete(); + } + + parent::removeButtonSubmit($form, $form_state); + } + } diff --git a/core/modules/media_library/src/Form/OEmbedForm.php b/core/modules/media_library/src/Form/OEmbedForm.php index 629c00c62a..c31bc8e0dd 100644 --- a/core/modules/media_library/src/Form/OEmbedForm.php +++ b/core/modules/media_library/src/Form/OEmbedForm.php @@ -6,7 +6,6 @@ use Drupal\Core\Form\FormBuilderInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; -use Drupal\file\FileUsage\FileUsageInterface; use Drupal\media\OEmbed\ResourceException; use Drupal\media\OEmbed\ResourceFetcherInterface; use Drupal\media\OEmbed\UrlResolverInterface; @@ -52,11 +51,9 @@ class OEmbedForm extends AddFormBase { * The oEmbed resource fetcher service. * @param \Drupal\media_library\OpenerResolverInterface $opener_resolver * The opener resolver. - * @param \Drupal\file\FileUsage\FileUsageInterface $file_usage - * The file usage service. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, UrlResolverInterface $url_resolver, ResourceFetcherInterface $resource_fetcher, OpenerResolverInterface $opener_resolver = NULL, FileUsageInterface $file_usage = NULL) { - parent::__construct($entity_type_manager, $library_ui_builder, $opener_resolver, $file_usage); + public function __construct(EntityTypeManagerInterface $entity_type_manager, MediaLibraryUiBuilder $library_ui_builder, UrlResolverInterface $url_resolver, ResourceFetcherInterface $resource_fetcher, OpenerResolverInterface $opener_resolver = NULL) { + parent::__construct($entity_type_manager, $library_ui_builder, $opener_resolver); $this->urlResolver = $url_resolver; $this->resourceFetcher = $resource_fetcher; } @@ -70,8 +67,7 @@ public static function create(ContainerInterface $container) { $container->get('media_library.ui_builder'), $container->get('media.oembed.url_resolver'), $container->get('media.oembed.resource_fetcher'), - $container->get('media_library.opener_resolver'), - $container->get('file.usage') + $container->get('media_library.opener_resolver') ); }