From 2d55b4ff75f2f7358ff765f3ec63591e45ca6f15 Mon Sep 17 00:00:00 2001
From: Cristian <cristian.aliaga@metadrop.net>
Date: Tue, 11 Jun 2024 12:21:14 +0200
Subject: [PATCH] Issue #3045509: Complete the field map with extra bundle
 field info

---
 .../Drupal/Core/Entity/EntityFieldManager.php    | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/core/lib/Drupal/Core/Entity/EntityFieldManager.php b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
index 666b81f575af..2b6b35cdc51f 100644
--- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php
@@ -546,6 +546,22 @@ public function getFieldMap() {
           }
         }
 
+        // Complete the field map with extra bundle field info.
+        foreach ($this->fieldMap as $entity_type_id => $entity_field_map) {
+          $entity_type_bundles_list = $this->entityTypeBundleInfo->getBundleInfo($entity_type_id);
+          foreach (array_keys($entity_type_bundles_list) as $bundle_id) {
+            if ($bundle_id != 'default') {
+              $bundle_field_definitions = $this->getFieldDefinitions($entity_type_id, $bundle_id);
+              foreach ($bundle_field_definitions as $bundle_field_name => $bundle_field_definition) {
+                if (!isset($entity_field_map[$bundle_field_name])) {
+                  $this->fieldMap[$entity_type_id][$bundle_field_name]['type'] = $bundle_field_definition->getType();
+                  $this->fieldMap[$entity_type_id][$bundle_field_name]['bundles'][$bundle_id] = $bundle_id;
+                }
+              }
+            }
+          }
+        }
+
         $this->cacheSet($cid, $this->fieldMap, Cache::PERMANENT, ['entity_types', 'entity_field_info']);
       }
     }
-- 
GitLab