Chris@0: updateFieldStorageDefinition() Chris@0: // with the new definition. Chris@0: $storage_definition = BaseFieldDefinition::create('boolean') Chris@0: ->setLabel(t('Revision translation affected')) Chris@0: ->setDescription(t('Indicates if the last edit of a translation belongs to current revision.')) Chris@0: ->setReadOnly(TRUE) Chris@0: ->setRevisionable(TRUE) Chris@0: ->setTranslatable(TRUE); Chris@0: Chris@0: \Drupal::entityDefinitionUpdateManager() Chris@0: ->installFieldStorageDefinition('revision_translation_affected', 'block_content', 'block_content', $storage_definition); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Generalizes the d6_block_content_type and d6_block_content_body_field Chris@0: * migrations. Chris@0: */ Chris@0: function block_content_update_8002() { Chris@0: // Removed in issue #2569605. The Migrate and Migrate Drupal modules are Chris@0: // marked experimental and do not need to support the update path until they Chris@0: // are stable. Chris@0: // @see https://www.drupal.org/node/2569469 Chris@0: } Chris@0: Chris@0: /** Chris@0: * Add 'revision_created' and 'revision_user' fields to 'block_content' entities. Chris@0: */ Chris@0: function block_content_update_8003() { Chris@0: $revision_created = BaseFieldDefinition::create('created') Chris@0: ->setLabel(t('Revision create time')) Chris@0: ->setDescription(t('The time that the current revision was created.')) Chris@0: ->setRevisionable(TRUE); Chris@0: Chris@0: \Drupal::entityDefinitionUpdateManager() Chris@0: ->installFieldStorageDefinition('revision_created', 'block_content', 'block_content', $revision_created); Chris@0: Chris@0: $revision_user = BaseFieldDefinition::create('entity_reference') Chris@0: ->setLabel(t('Revision user')) Chris@0: ->setDescription(t('The user ID of the author of the current revision.')) Chris@0: ->setSetting('target_type', 'user') Chris@0: ->setRevisionable(TRUE); Chris@0: Chris@0: \Drupal::entityDefinitionUpdateManager() Chris@0: ->installFieldStorageDefinition('revision_user', 'block_content', 'block_content', $revision_user); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Fix the block_content entity type to specify its revision data table. Chris@0: */ Chris@0: function block_content_update_8300() { Chris@0: $definition_update_manager = \Drupal::entityDefinitionUpdateManager(); Chris@0: $entity_type = $definition_update_manager->getEntityType('block_content'); Chris@0: $entity_type->set('revision_data_table', 'block_content_field_revision'); Chris@0: $definition_update_manager->updateEntityType($entity_type); Chris@14: } Chris@0: Chris@14: /** Chris@14: * Add a publishing status field for block_content entities. Chris@14: */ Chris@14: function block_content_update_8400() { Chris@14: $definition_update_manager = \Drupal::entityDefinitionUpdateManager(); Chris@14: Chris@14: // Add the published entity key to the block_content entity type. Chris@14: $entity_type = $definition_update_manager->getEntityType('block_content'); Chris@14: $entity_keys = $entity_type->getKeys(); Chris@14: $entity_keys['published'] = 'status'; Chris@14: $entity_type->set('entity_keys', $entity_keys); Chris@14: $definition_update_manager->updateEntityType($entity_type); Chris@14: Chris@14: // Add the publishing status field to the block_content entity type. Chris@14: $status = BaseFieldDefinition::create('boolean') Chris@14: ->setLabel(new TranslatableMarkup('Publishing status')) Chris@14: ->setDescription(new TranslatableMarkup('A boolean indicating the published state.')) Chris@14: ->setRevisionable(TRUE) Chris@14: ->setTranslatable(TRUE) Chris@14: ->setDefaultValue(TRUE); Chris@14: Chris@17: $has_content_translation_status_field = $definition_update_manager->getFieldStorageDefinition('content_translation_status', 'block_content'); Chris@14: if ($has_content_translation_status_field) { Chris@16: $status->setInitialValueFromField('content_translation_status', TRUE); Chris@14: } Chris@14: else { Chris@14: $status->setInitialValue(TRUE); Chris@14: } Chris@14: $definition_update_manager->installFieldStorageDefinition('status', 'block_content', 'block_content', $status); Chris@14: Chris@14: // Uninstall the 'content_translation_status' field if needed. Chris@14: $database = \Drupal::database(); Chris@14: if ($has_content_translation_status_field) { Chris@14: // First we have to remove the field data. Chris@14: $database->update($entity_type->getDataTable()) Chris@14: ->fields(['content_translation_status' => NULL]) Chris@14: ->execute(); Chris@14: Chris@14: // A site may have disabled revisionability for this entity type. Chris@14: if ($entity_type->isRevisionable()) { Chris@14: $database->update($entity_type->getRevisionDataTable()) Chris@14: ->fields(['content_translation_status' => NULL]) Chris@14: ->execute(); Chris@14: } Chris@14: Chris@14: $content_translation_status = $definition_update_manager->getFieldStorageDefinition('content_translation_status', 'block_content'); Chris@14: $definition_update_manager->uninstallFieldStorageDefinition($content_translation_status); Chris@14: } Chris@0: } Chris@17: Chris@17: /** Chris@17: * Add 'reusable' field to 'block_content' entities. Chris@17: */ Chris@17: function block_content_update_8600() { Chris@17: $reusable = BaseFieldDefinition::create('boolean') Chris@17: ->setLabel(t('Reusable')) Chris@17: ->setDescription(t('A boolean indicating whether this block is reusable.')) Chris@17: ->setTranslatable(FALSE) Chris@17: ->setRevisionable(FALSE) Chris@17: ->setDefaultValue(TRUE) Chris@17: ->setInitialValue(TRUE); Chris@17: Chris@17: \Drupal::entityDefinitionUpdateManager() Chris@17: ->installFieldStorageDefinition('reusable', 'block_content', 'block_content', $reusable); Chris@17: }