diff core/modules/image/src/Controller/QuickEditImageController.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
line wrap: on
line diff
--- a/core/modules/image/src/Controller/QuickEditImageController.php	Thu Feb 28 13:11:55 2019 +0000
+++ b/core/modules/image/src/Controller/QuickEditImageController.php	Thu May 09 15:34:47 2019 +0100
@@ -5,7 +5,9 @@
 use Drupal\Core\Cache\CacheableJsonResponse;
 use Drupal\Core\Controller\ControllerBase;
 use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
 use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\File\FileSystemInterface;
 use Drupal\Core\Image\ImageFactory;
 use Drupal\Core\Render\Element\StatusMessages;
 use Drupal\Core\Render\RendererInterface;
@@ -42,6 +44,20 @@
   protected $imageFactory;
 
   /**
+   * The entity display repository service.
+   *
+   * @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface
+   */
+  protected $entityDisplayRepository;
+
+  /**
+   * The file system.
+   *
+   * @var \Drupal\Core\File\FileSystemInterface
+   */
+  protected $fileSystem;
+
+  /**
    * Constructs a new QuickEditImageController.
    *
    * @param \Drupal\Core\Render\RendererInterface $renderer
@@ -50,11 +66,25 @@
    *   The image factory.
    * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store_factory
    *   The tempstore factory.
+   * @param \Drupal\Core\Entity\EntityDisplayRepositoryInterface $entity_display_repository
+   *   The entity display repository service.
+   * @param \Drupal\Core\File\FileSystemInterface $file_system
+   *   The file system.
    */
-  public function __construct(RendererInterface $renderer, ImageFactory $image_factory, PrivateTempStoreFactory $temp_store_factory) {
+  public function __construct(RendererInterface $renderer, ImageFactory $image_factory, PrivateTempStoreFactory $temp_store_factory, EntityDisplayRepositoryInterface $entity_display_repository = NULL, FileSystemInterface $file_system = NULL) {
     $this->renderer = $renderer;
     $this->imageFactory = $image_factory;
     $this->tempStore = $temp_store_factory->get('quickedit');
+    if (!$entity_display_repository) {
+      @trigger_error('The entity_display.repository service must be passed to QuickEditImageController::__construct(), it is required before Drupal 9.0.0. See https://www.drupal.org/node/2549139.', E_USER_DEPRECATED);
+      $entity_display_repository = \Drupal::service('entity_display.repository');
+    }
+    $this->entityDisplayRepository = $entity_display_repository;
+    if (!$file_system) {
+      @trigger_error('The file_system service must be passed to QuickEditImageController::__construct(), it is required before Drupal 9.0.0. See https://www.drupal.org/node/3006851.', E_USER_DEPRECATED);
+      $file_system = \Drupal::service('file_system');
+    }
+    $this->fileSystem = $file_system;
   }
 
   /**
@@ -64,7 +94,9 @@
     return new static(
       $container->get('renderer'),
       $container->get('image.factory'),
-      $container->get('tempstore.private')
+      $container->get('tempstore.private'),
+      $container->get('entity_display.repository'),
+      $container->get('file_system')
     );
   }
 
@@ -95,7 +127,7 @@
     }
 
     // Create the destination directory if it does not already exist.
-    if (isset($destination) && !file_prepare_directory($destination, FILE_CREATE_DIRECTORY)) {
+    if (isset($destination) && !$this->fileSystem->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY)) {
       return new JsonResponse(['main_error' => $this->t('The destination directory could not be created.'), 'errors' => '']);
     }
 
@@ -115,7 +147,7 @@
       $entity->$field_name->setValue($value);
 
       // Render the new image using the correct formatter settings.
-      $entity_view_mode_ids = array_keys($this->entityManager()->getViewModes($entity->getEntityTypeId()));
+      $entity_view_mode_ids = array_keys($this->entityDisplayRepository->getViewModes($entity->getEntityTypeId()));
       if (in_array($view_mode_id, $entity_view_mode_ids, TRUE)) {
         $output = $entity->$field_name->view($view_mode_id);
       }