You are here

public function EntityLastInstalledSchemaRepository::getLastInstalledDefinitions in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/EntityLastInstalledSchemaRepository.php \Drupal\Core\Entity\EntityLastInstalledSchemaRepository::getLastInstalledDefinitions()
  2. 10 core/lib/Drupal/Core/Entity/EntityLastInstalledSchemaRepository.php \Drupal\Core\Entity\EntityLastInstalledSchemaRepository::getLastInstalledDefinitions()

Gets the entity type definitions in their most recently installed state.

During the application lifetime, entity type definitions can change. For example, updated code can be deployed. The \Drupal\Core\Entity\EntityTypeManagerInterface::getDefinitions() method will always return the definitions as determined by the current codebase. This method returns the definitions from the last time that a \Drupal\Core\Entity\EntityTypeListener event was completed. In other words, the definitions that the entity type's handlers have incorporated into the application state. For example, if the entity type's storage handler is SQL-based, the definition for which database tables were created.

Application management code can check if \Drupal\Core\Entity\EntityTypeManagerInterface::getDefinitions() differs from getLastInstalledDefinitions() and decide whether to:

Return value

\Drupal\Core\Entity\EntityTypeInterface[] An array containing the installed definition for all entity types, keyed by the entity type ID.

Overrides EntityLastInstalledSchemaRepositoryInterface::getLastInstalledDefinitions

File

core/lib/Drupal/Core/Entity/EntityLastInstalledSchemaRepository.php, line 40

Class

EntityLastInstalledSchemaRepository
Provides a repository for installed entity definitions.

Namespace

Drupal\Core\Entity

Code

public function getLastInstalledDefinitions() {
  $all_definitions = $this->keyValueFactory
    ->get('entity.definitions.installed')
    ->getAll();

  // Filter out field storage definitions.
  $filtered_keys = array_filter(array_keys($all_definitions), function ($key) {
    return substr($key, -12) === '.entity_type';
  });
  $entity_type_definitions = array_intersect_key($all_definitions, array_flip($filtered_keys));

  // Ensure that the returned array is keyed by the entity type ID.
  $keys = array_keys($entity_type_definitions);
  $keys = array_map(function ($key) {
    $parts = explode('.', $key);
    return $parts[0];
  }, $keys);
  return array_combine($keys, $entity_type_definitions);
}