function lingotek_update_8215 in Lingotek Translation 8.2
Remove old unused Lingotek metadata fields from content entities.
File
- ./
lingotek.install, line 721 - Install, update and uninstall functions for the Lingotek module.
Code
function lingotek_update_8215() {
$fields = [
'lingotek_document_id',
'lingotek_hash',
'lingotek_profile',
'lingotek_translation_source',
'lingotek_translation_status',
'lingotek_translation_created',
'lingotek_translation_changed',
];
/** @var \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface $entity_definition_update_manager */
$connection = \Drupal::database();
$entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
$entity_type_manager = \Drupal::entityTypeManager();
$entities = $entity_type_manager
->getDefinitions();
foreach ($entities as $entity_type_id => $entity_type) {
foreach ($fields as $field) {
if ($field_definition = $entity_definition_update_manager
->getFieldStorageDefinition($field, $entity_type_id)) {
try {
// Data was migrated in lingotek_update_8011, we can delete values from
// columns or tables without looking behind now.
if ($field !== 'lingotek_translation_status') {
$connection
->update($entity_type
->getDataTable())
->fields([
$field => NULL,
])
->execute();
$message = new FormattableMarkup('%field_name values deleted for entity %entity_type_id', [
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
]);
\Drupal::messenger()
->addWarning($message);
\Drupal::logger('lingotek')
->warning($message);
}
else {
$data_table_name = _lingotek_get_deleted_translation_status_data_table_name($entity_type_id);
$tables = [
$data_table_name,
];
if ($entity_type
->isRevisionable()) {
$revision_table_name = _lingotek_get_deleted_translation_status_revision_table_name($entity_type_id);
$tables[] = $revision_table_name;
}
foreach ($tables as $table_name) {
$connection
->schema()
->dropTable($table_name);
$message = new FormattableMarkup('%table deleted for updating entity %entity_type_id field %field_name', [
'%table' => $table_name,
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
]);
\Drupal::messenger()
->addWarning($message);
\Drupal::logger('lingotek')
->warning($message);
}
}
} catch (\Exception $e) {
$error = new FormattableMarkup('%field_name values deletion previous to field deletion failed for entity %entity_type_id with message: %message', [
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
'%message' => $e
->getMessage(),
]);
\Drupal::messenger()
->addError($error);
\Drupal::logger('lingotek')
->error($error);
}
try {
$entity_definition_update_manager
->uninstallFieldStorageDefinition($field_definition);
\Drupal::messenger()
->addStatus(new FormattableMarkup('%field_name deleted for entity %entity_type_id', [
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
]));
} catch (\Exception $e) {
$error = new FormattableMarkup('%field_name deletion failed for entity %entity_type_id with message: %message', [
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
'%message' => $e
->getMessage(),
]);
\Drupal::messenger()
->addError($error);
\Drupal::logger('lingotek')
->error($error);
}
}
else {
\Drupal::messenger()
->addWarning(new FormattableMarkup('%field_name not found in entity %entity_type_id', [
'%field_name' => $field,
'%entity_type_id' => $entity_type_id,
]));
}
}
}
}