moduleExists('content_translation')) { $dependencies['block_content'][8400] = [ 'content_translation' => 8400, ]; return $dependencies; } } /** * Add 'revision_translation_affected' field to 'block_content' entities. */ function block_content_update_8001() { // Install the definition that this field had in // \Drupal\block_content\Entity\BlockContent::baseFieldDefinitions() // at the time that this update function was written. If/when code is // deployed that changes that definition, the corresponding module must // implement an update function that invokes // \Drupal::entityDefinitionUpdateManager()->updateFieldStorageDefinition() // with the new definition. $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); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('revision_translation_affected', 'block_content', 'block_content', $storage_definition); } /** * Generalizes the d6_block_content_type and d6_block_content_body_field * migrations. */ function block_content_update_8002() { // Removed in issue #2569605. The Migrate and Migrate Drupal modules are // marked experimental and do not need to support the update path until they // are stable. // @see https://www.drupal.org/node/2569469 } /** * Add 'revision_created' and 'revision_user' fields to 'block_content' entities. */ function block_content_update_8003() { $revision_created = BaseFieldDefinition::create('created') ->setLabel(t('Revision create time')) ->setDescription(t('The time that the current revision was created.')) ->setRevisionable(TRUE); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('revision_created', 'block_content', 'block_content', $revision_created); $revision_user = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Revision user')) ->setDescription(t('The user ID of the author of the current revision.')) ->setSetting('target_type', 'user') ->setRevisionable(TRUE); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('revision_user', 'block_content', 'block_content', $revision_user); } /** * Fix the block_content entity type to specify its revision data table. */ function block_content_update_8300() { $definition_update_manager = \Drupal::entityDefinitionUpdateManager(); $entity_type = $definition_update_manager->getEntityType('block_content'); $entity_type->set('revision_data_table', 'block_content_field_revision'); $definition_update_manager->updateEntityType($entity_type); } /** * Add a publishing status field for block_content entities. */ function block_content_update_8400() { $definition_update_manager = \Drupal::entityDefinitionUpdateManager(); // Add the published entity key to the block_content entity type. $entity_type = $definition_update_manager->getEntityType('block_content'); $entity_keys = $entity_type->getKeys(); $entity_keys['published'] = 'status'; $entity_type->set('entity_keys', $entity_keys); $definition_update_manager->updateEntityType($entity_type); // Add the publishing status field to the block_content entity type. $status = BaseFieldDefinition::create('boolean') ->setLabel(new TranslatableMarkup('Publishing status')) ->setDescription(new TranslatableMarkup('A boolean indicating the published state.')) ->setRevisionable(TRUE) ->setTranslatable(TRUE) ->setDefaultValue(TRUE); $has_content_translation_status_field = \Drupal::moduleHandler()->moduleExists('content_translation') && $definition_update_manager->getFieldStorageDefinition('content_translation_status', 'block_content'); if ($has_content_translation_status_field) { $status->setInitialValueFromField('content_translation_status'); } else { $status->setInitialValue(TRUE); } $definition_update_manager->installFieldStorageDefinition('status', 'block_content', 'block_content', $status); // Uninstall the 'content_translation_status' field if needed. $database = \Drupal::database(); if ($has_content_translation_status_field) { // First we have to remove the field data. $database->update($entity_type->getDataTable()) ->fields(['content_translation_status' => NULL]) ->execute(); // A site may have disabled revisionability for this entity type. if ($entity_type->isRevisionable()) { $database->update($entity_type->getRevisionDataTable()) ->fields(['content_translation_status' => NULL]) ->execute(); } $content_translation_status = $definition_update_manager->getFieldStorageDefinition('content_translation_status', 'block_content'); $definition_update_manager->uninstallFieldStorageDefinition($content_translation_status); } }