function system_update_8402 in Drupal 8
Add the 'revision_translation_affected' field to all entity types.
File
- core/
modules/ system/ system.install, line 2400 - Install, update and uninstall functions for the system module.
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);
}
}
}