Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Entity/EntityFieldManager.php @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line diff
--- a/core/lib/Drupal/Core/Entity/EntityFieldManager.php Thu Feb 28 13:21:36 2019 +0000 +++ b/core/lib/Drupal/Core/Entity/EntityFieldManager.php Thu May 09 15:33:08 2019 +0100 @@ -7,6 +7,7 @@ use Drupal\Core\Cache\UseCacheBackendTrait; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Field\BaseFieldDefinition; +use Drupal\Core\Field\FieldDefinition; use Drupal\Core\KeyValueStore\KeyValueFactoryInterface; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; @@ -55,6 +56,13 @@ protected $fieldStorageDefinitions; /** + * Static cache of active field storage definitions per entity type. + * + * @var array + */ + protected $activeFieldStorageDefinitions; + + /** * An array keyed by entity type. Each value is an array whose keys are * field names and whose value is an array with two entries: * - type: The field type. @@ -405,6 +413,8 @@ if ($field_definition instanceof BaseFieldDefinition) { $field_definition->setName($field_name); $field_definition->setTargetEntityTypeId($entity_type_id); + } + if ($field_definition instanceof BaseFieldDefinition || $field_definition instanceof FieldDefinition) { $field_definition->setTargetBundle($bundle); } } @@ -443,6 +453,25 @@ } /** + * Gets the active field storage definitions for a content entity type. + * + * @param string $entity_type_id + * The entity type ID. Only content entities are supported. + * + * @return \Drupal\Core\Field\FieldStorageDefinitionInterface[] + * An array of field storage definitions that are active in the current + * request, keyed by field name. + * + * @internal + */ + public function getActiveFieldStorageDefinitions($entity_type_id) { + if (!isset($this->activeFieldStorageDefinitions[$entity_type_id])) { + $this->activeFieldStorageDefinitions[$entity_type_id] = $this->keyValueFactory->get('entity.definitions.installed')->get($entity_type_id . '.field_storage_definitions', []); + } + return $this->activeFieldStorageDefinitions[$entity_type_id] ?: $this->getFieldStorageDefinitions($entity_type_id); + } + + /** * {@inheritdoc} */ public function setFieldMap(array $field_map) { @@ -566,6 +595,7 @@ $this->baseFieldDefinitions = []; $this->fieldDefinitions = []; $this->fieldStorageDefinitions = []; + $this->activeFieldStorageDefinitions = []; $this->fieldMap = []; $this->fieldMapByFieldType = []; $this->entityDisplayRepository->clearDisplayModeInfo(); @@ -585,6 +615,7 @@ $this->fieldDefinitions = []; $this->baseFieldDefinitions = []; $this->fieldStorageDefinitions = []; + $this->activeFieldStorageDefinitions = []; } }