Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / field / src / FieldStorageConfigStorage.php
index 7a793f6829ba769f18e9c2e2aa1e7bed8456e3b7..3c3d8d8e3f33ca3ce849a4894c52707e89f8ea84 100644 (file)
@@ -7,15 +7,15 @@ use Drupal\Core\Config\Entity\ConfigEntityStorage;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Field\DeletedFieldsRepositoryInterface;
 use Drupal\Core\Field\FieldTypePluginManagerInterface;
 use Drupal\Core\Language\LanguageManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
-use Drupal\Core\State\StateInterface;
 
 /**
- * Controller class for "field storage" configuration entities.
+ * Storage handler for "field storage" configuration entities.
  */
 class FieldStorageConfigStorage extends ConfigEntityStorage {
 
@@ -34,18 +34,18 @@ class FieldStorageConfigStorage extends ConfigEntityStorage {
   protected $entityManager;
 
   /**
-   * The state keyvalue collection.
+   * The field type plugin manager.
    *
-   * @var \Drupal\Core\State\StateInterface
+   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface
    */
-  protected $state;
+  protected $fieldTypeManager;
 
   /**
-   * The field type plugin manager.
+   * The deleted fields repository.
    *
-   * @var \Drupal\Core\Field\FieldTypePluginManagerInterface
+   * @var \Drupal\Core\Field\DeletedFieldsRepositoryInterface
    */
-  protected $fieldTypeManager;
+  protected $deletedFieldsRepository;
 
   /**
    * Constructs a FieldStorageConfigStorage object.
@@ -62,17 +62,17 @@ class FieldStorageConfigStorage extends ConfigEntityStorage {
    *   The entity manager.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
    *   The module handler.
-   * @param \Drupal\Core\State\StateInterface $state
-   *   The state key value store.
-   * @param \Drupal\Component\Plugin\PluginManagerInterface\FieldTypePluginManagerInterface $field_type_manager
+   * @param \Drupal\Core\Field\FieldTypePluginManagerInterface $field_type_manager
    *   The field type plugin manager.
+   * @param \Drupal\Core\Field\DeletedFieldsRepositoryInterface $deleted_fields_repository
+   *   The deleted fields repository.
    */
-  public function __construct(EntityTypeInterface $entity_type, ConfigFactoryInterface $config_factory, UuidInterface $uuid_service, LanguageManagerInterface $language_manager, EntityManagerInterface $entity_manager, ModuleHandlerInterface $module_handler, StateInterface $state, FieldTypePluginManagerInterface $field_type_manager) {
+  public function __construct(EntityTypeInterface $entity_type, ConfigFactoryInterface $config_factory, UuidInterface $uuid_service, LanguageManagerInterface $language_manager, EntityManagerInterface $entity_manager, ModuleHandlerInterface $module_handler, FieldTypePluginManagerInterface $field_type_manager, DeletedFieldsRepositoryInterface $deleted_fields_repository) {
     parent::__construct($entity_type, $config_factory, $uuid_service, $language_manager);
     $this->entityManager = $entity_manager;
     $this->moduleHandler = $module_handler;
-    $this->state = $state;
     $this->fieldTypeManager = $field_type_manager;
+    $this->deletedFieldsRepository = $deleted_fields_repository;
   }
 
   /**
@@ -86,8 +86,8 @@ class FieldStorageConfigStorage extends ConfigEntityStorage {
       $container->get('language_manager'),
       $container->get('entity.manager'),
       $container->get('module_handler'),
-      $container->get('state'),
-      $container->get('plugin.manager.field.field_type')
+      $container->get('plugin.manager.field.field_type'),
+      $container->get('entity_field.deleted_fields_repository')
     );
   }
 
@@ -104,7 +104,7 @@ class FieldStorageConfigStorage extends ConfigEntityStorage {
 
     // Get field storages living in configuration. If we are explicitly looking
     // for deleted storages only, this can be skipped, because they will be
-    // retrieved from state below.
+    // retrieved from the deleted fields repository below.
     if (empty($conditions['deleted'])) {
       if (isset($conditions['entity_type']) && isset($conditions['field_name'])) {
         // Optimize for the most frequent case where we do have a specific ID.
@@ -117,11 +117,14 @@ class FieldStorageConfigStorage extends ConfigEntityStorage {
       }
     }
 
-    // Merge deleted field storages (living in state) if needed.
+    // Merge deleted field storage definitions from the deleted fields
+    // repository if needed.
     if ($include_deleted || !empty($conditions['deleted'])) {
-      $deleted_storages = $this->state->get('field.storage.deleted') ?: [];
-      foreach ($deleted_storages as $id => $config) {
-        $storages[$id] = $this->create($config);
+      $deleted_storage_definitions = $this->deletedFieldsRepository->getFieldStorageDefinitions();
+      foreach ($deleted_storage_definitions as $id => $field_storage_definition) {
+        if ($field_storage_definition instanceof FieldStorageConfigInterface) {
+          $storages[$id] = $field_storage_definition;
+        }
       }
     }