X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fcontent_translation%2Fcontent_translation.install;h=bc948e1a3aea5a75f1c8a0baebb3060f33b81cd4;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=dc12d9f3fcf9bc790580072a70dd51a7912fb2f4;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website
diff --git a/web/core/modules/content_translation/content_translation.install b/web/core/modules/content_translation/content_translation.install
index dc12d9f3f..bc948e1a3 100644
--- a/web/core/modules/content_translation/content_translation.install
+++ b/web/core/modules/content_translation/content_translation.install
@@ -5,7 +5,9 @@
* Installation functions for Content Translation module.
*/
-use \Drupal\Core\Url;
+use Drupal\Core\Entity\Sql\SqlEntityStorageInterface;
+use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Url;
/**
* Implements hook_install().
@@ -18,17 +20,17 @@ function content_translation_install() {
// Translation works when at least two languages are added.
if (count(\Drupal::languageManager()->getLanguages()) < 2) {
$t_args = [
- ':language_url' => Url::fromRoute('entity.configurable_language.collection')->toString()
+ ':language_url' => Url::fromRoute('entity.configurable_language.collection')->toString(),
];
$message = t('This site has only a single language enabled. Add at least one more language in order to translate content.', $t_args);
- drupal_set_message($message, 'warning');
+ \Drupal::messenger()->addWarning($message);
}
// Point the user to the content translation settings.
$t_args = [
- ':settings_url' => Url::fromRoute('language.content_settings_page')->toString()
+ ':settings_url' => Url::fromRoute('language.content_settings_page')->toString(),
];
$message = t('Enable translation for content types, taxonomy vocabularies, accounts, or any other element you wish to translate.', $t_args);
- drupal_set_message($message, 'warning');
+ \Drupal::messenger()->addWarning($message);
}
/**
@@ -44,3 +46,58 @@ function content_translation_update_8001() {
function content_translation_update_8002() {
\Drupal::service('plugin.manager.field.field_type')->clearCachedDefinitions();
}
+
+/**
+ * Fix the initial values for content translation metadata fields.
+ */
+function content_translation_update_8400() {
+ $database = \Drupal::database();
+ /** @var \Drupal\content_translation\ContentTranslationManagerInterface $content_translation_manager */
+ $content_translation_manager = \Drupal::service('content_translation.manager');
+ /** @var \Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface $last_installed_schema_repository */
+ $last_installed_schema_repository = \Drupal::service('entity.last_installed_schema.repository');
+ $entity_type_manager = \Drupal::entityTypeManager();
+ $entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
+
+ $entity_type_manager->clearCachedDefinitions();
+ foreach ($content_translation_manager->getSupportedEntityTypes() as $entity_type_id => $entity_type_definition) {
+ $storage = $entity_type_manager->getStorage($entity_type_id);
+ if ($storage instanceof SqlEntityStorageInterface) {
+ $entity_type = $entity_definition_update_manager->getEntityType($entity_type_id);
+ $storage_definitions = $last_installed_schema_repository->getLastInstalledFieldStorageDefinitions($entity_type_id);
+
+ // Since the entity type is managed by Content Translation, we can assume
+ // that it is translatable, so we use the data and revision data tables.
+ $tables_to_update = [$entity_type->getDataTable()];
+ if ($entity_type->isRevisionable()) {
+ $tables_to_update += [$entity_type->getRevisionDataTable()];
+ }
+
+ foreach ($tables_to_update as $table_name) {
+ // Fix the values of the 'content_translation_source' field.
+ if (isset($storage_definitions['content_translation_source'])) {
+ $database->update($table_name)
+ ->fields(['content_translation_source' => LanguageInterface::LANGCODE_NOT_SPECIFIED])
+ ->isNull('content_translation_source')
+ ->execute();
+ }
+
+ // Fix the values of the 'content_translation_outdated' field.
+ if (isset($storage_definitions['content_translation_outdated'])) {
+ $database->update($table_name)
+ ->fields(['content_translation_outdated' => 0])
+ ->isNull('content_translation_outdated')
+ ->execute();
+ }
+
+ // Fix the values of the 'content_translation_status' field.
+ if (isset($storage_definitions['content_translation_status'])) {
+ $database->update($table_name)
+ ->fields(['content_translation_status' => 1])
+ ->isNull('content_translation_status')
+ ->execute();
+ }
+ }
+ }
+ }
+}