diff --git a/group.install b/group.install index 49d1dd4..470626a 100644 --- a/group.install +++ b/group.install @@ -10,6 +10,7 @@ use Drupal\Core\Config\ExtensionInstallStorage; use Drupal\Core\Config\InstallStorage; use Drupal\Core\Entity\EntityTypeListenerInterface; use Drupal\Core\Entity\Sql\SqlContentEntityStorage; +use Drupal\Core\Field\BaseFieldDefinition; /** * Resave all GroupContent labels and remove orphaned entities. @@ -424,3 +425,61 @@ function group_update_8014() { $group_type->save(TRUE); } } + + +/** + * alter the `group_content_field_data` table to change entity_id to VARCHAR(32) + */ +function group_update_8015() { + $database = Drupal::database(); + $entity_type = 'group_content'; + $table = 'group_content_field_data'; + $field_name = 'entity_id'; + + $rows = NULL; + if ($database->schema()->tableExists($table)) { + // The table data to restore after the update is completed. + $rows = $database->select($table, 'pm') + ->fields('pm') + ->execute() + ->fetchAll(); + } + + $database->truncate($table)->execute(); + + $entity_definition_update_manager = Drupal::entityDefinitionUpdateManager(); + + // Delete the storage definition if it was defined before. + $storage_definition = $entity_definition_update_manager->getFieldStorageDefinition($field_name, $entity_type); + $entity_definition_update_manager->uninstallFieldStorageDefinition($storage_definition); + + // Add content_translation_changed field. + $new_field_storage = BaseFieldDefinition::create('entity_reference') + ->setLabel(t('Content')) + ->setDescription(t('The entity to add to the group.')) + ->setSetting('target_type', 'group_type') + ->setDisplayOptions('form', [ + 'type' => 'entity_reference_autocomplete', + 'weight' => 5, + 'settings' => [ + 'match_operator' => 'CONTAINS', + 'size' => '60', + 'placeholder' => '', + ], + ]) + ->setDisplayConfigurable('view', TRUE) + ->setDisplayConfigurable('form', TRUE) + ->setRequired(TRUE); + + $entity_definition_update_manager->installFieldStorageDefinition('entity_id', $entity_type, 'group', $new_field_storage); + + // Restore existing data in the same table. + if (!is_null($rows)) { + foreach ($rows as $row) { + $database->insert($table) + ->fields((array) $row) + ->execute(); + } + } + +} \ No newline at end of file