function system_update_8702

Add the 'revision_translation_affected' entity key.

File

core/modules/system/system.install, line 2600

Code

function system_update_8702() {
    $entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
    // Get a list of revisionable and translatable entity types.
    
    /** @var \Drupal\Core\Entity\EntityTypeInterface[] $last_installed_definitions */
    $last_installed_definitions = array_filter($entity_definition_update_manager->getEntityTypes(), function (EntityTypeInterface $entity_type) {
        return $entity_type->isRevisionable() && $entity_type->isTranslatable();
    });
    // Ensure that we don't use the cached in-code definitions to support sites
    // that might be updating from 8.3.x straight to 8.7.x.
    \Drupal::entityTypeManager()->useCaches(FALSE);
    $live_definitions = \Drupal::entityTypeManager()->getDefinitions();
    // Update the 'revision_translation_affected' entity key of the last installed
    // definitions to use the value of the live (in-code) entity type definitions
    // in cases when the key has not been populated yet.
    foreach ($last_installed_definitions as $entity_type_id => $entity_type) {
        // The live (in-code) entity type definition might not exist anymore, while
        // an update function that would remove its last installed definition didn't
        // run yet. We don't need to update it in that case.
        if (!isset($live_definitions[$entity_type_id])) {
            continue;
        }
        $revision_translation_affected_key = $live_definitions[$entity_type_id]->getKey('revision_translation_affected');
        if (!$entity_type->hasKey('revision_translation_affected') && !empty($revision_translation_affected_key) && $entity_definition_update_manager->getFieldStorageDefinition($revision_translation_affected_key, $entity_type_id)) {
            $entity_keys = $entity_type->getKeys();
            $entity_keys['revision_translation_affected'] = $revision_translation_affected_key;
            $entity_type->set('entity_keys', $entity_keys);
            $entity_definition_update_manager->updateEntityType($entity_type);
        }
    }
    \Drupal::entityTypeManager()->useCaches(TRUE);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.