function system_update_8402

Add the 'revision_translation_affected' field to all entity types.

File

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

Code

function system_update_8402() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  // Clear the cached entity type definitions so we get the new
  // 'revision_translation_affected' entity key.
  \Drupal::entityTypeManager()->clearCachedDefinitions();
  // Get a list of revisionable and translatable entity types.
  /** @var \Drupal\Core\Entity\ContentEntityTypeInterface[] $definitions */
  $definitions = array_filter(\Drupal::entityTypeManager()->getDefinitions(), function (EntityTypeInterface $entity_type) use ($definition_update_manager) {
    if ($entity_type = $definition_update_manager->getEntityType($entity_type->id())) {
      return $entity_type->isRevisionable() && $entity_type->isTranslatable();
    }
    return FALSE;
  });
  foreach ($definitions as $entity_type_id => $entity_type) {
    $field_name = $entity_type->getKey('revision_translation_affected');
    // Install the 'revision_translation_affected' field if needed.
    if (!$definition_update_manager->getFieldStorageDefinition($field_name, $entity_type_id)) {
      $storage_definition = BaseFieldDefinition::create('boolean')->setLabel(t('Revision translation affected'))
        ->setDescription(t('Indicates if the last edit of a translation belongs to current revision.'))
        ->setReadOnly(TRUE)
        ->setRevisionable(TRUE)
        ->setTranslatable(TRUE)
        ->setInitialValue(TRUE);
      $definition_update_manager->installFieldStorageDefinition($field_name, $entity_type_id, $entity_type_id, $storage_definition);
    }
  }
}

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