Chris@0: moduleExists('content_translation')) { Chris@14: $dependencies['block_content'][8400] = [ Chris@14: 'content_translation' => 8400, Chris@14: ]; Chris@14: Chris@14: return $dependencies; Chris@14: } Chris@14: } Chris@0: Chris@0: /** Chris@0: * Add 'revision_translation_affected' field to 'block_content' entities. Chris@0: */ Chris@0: function block_content_update_8001() { Chris@0: // Install the definition that this field had in Chris@0: // \Drupal\block_content\Entity\BlockContent::baseFieldDefinitions() Chris@0: // at the time that this update function was written. If/when code is Chris@0: // deployed that changes that definition, the corresponding module must Chris@0: // implement an update function that invokes Chris@0: // \Drupal::entityDefinitionUpdateManager()->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@14: $has_content_translation_status_field = \Drupal::moduleHandler()->moduleExists('content_translation') && $definition_update_manager->getFieldStorageDefinition('content_translation_status', 'block_content'); Chris@14: if ($has_content_translation_status_field) { Chris@14: $status->setInitialValueFromField('content_translation_status'); 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: }