From e093e140acb13c60cc8693f18019af1cd30be0fc Mon Sep 17 00:00:00 2001 From: Christoph Ludolf Date: Wed, 25 Mar 2026 08:47:31 +0100 Subject: [PATCH 1/2] Container/Export: patch to remove faulty multilingalism entries after container import --- .../Container/Export/class.ilContainerImporter.php | 14 ++++++++++++++ .../Export/classes/class.ilImportContainer.php | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/components/ILIAS/Container/Export/class.ilContainerImporter.php b/components/ILIAS/Container/Export/class.ilContainerImporter.php index 871b134934a4..dfc9ed20899e 100755 --- a/components/ILIAS/Container/Export/class.ilContainerImporter.php +++ b/components/ILIAS/Container/Export/class.ilContainerImporter.php @@ -27,6 +27,10 @@ class ilContainerImporter extends ilXmlImporter protected ilLogger $cont_log; protected \ILIAS\Skill\Service\SkillProfileService $skill_profile_service; + # Patch Start: Fix multilingualism replaces course title + protected string $import_id; + # Patch End: Fix multilingualism replaces course title + public function init(): void { global $DIC; @@ -48,6 +52,10 @@ public function importXmlRepresentation(string $a_entity, string $a_id, string $ $parser = new ilContainerXmlParser($a_mapping, trim($a_xml)); $parser->parse($a_id); + + # Patch Start: Fix multilingualism replaces course title + $this->import_id = $a_id; + # Patch End: Fix multilingualism replaces course title } /** @@ -96,6 +104,12 @@ public function finalProcessing(ilImportMapping $a_mapping): void ilParticipants::getDefaultMemberRole((int) $new_crs_ref_id) ); } + + # Patch Start: Fix multilingualism replaces course title + global $DIC; + $obj_id = (int) $a_mapping->getMapping('components/ILIAS/ILIASObject', 'obj', $this->import_id); + $DIC->database()->manipulate("DELETE FROM object_translation WHERE title = 'pU76w5DUIuCLCtFEsvhUdS' AND " . " obj_id = " . $DIC->database()->quote($obj_id, ilDBConstants::T_INTEGER)); + # Patch End: Fix multilingualism replaces course title } protected function handleOfflineStatus(string $xml, ilImportMapping $mapping): void diff --git a/components/ILIAS/Export/classes/class.ilImportContainer.php b/components/ILIAS/Export/classes/class.ilImportContainer.php index f2a054e860e8..b43b23541b5b 100755 --- a/components/ILIAS/Export/classes/class.ilImportContainer.php +++ b/components/ILIAS/Export/classes/class.ilImportContainer.php @@ -75,7 +75,11 @@ protected function createDummy(string $a_type): ilObject $class_name = "ilObj" . $this->objDefinition->getClassName($a_type); $new = new $class_name(); - $new->setTitle('Import'); + + # Patch Start: Fix multilingualism replaces course title + $new->setTitle('pU76w5DUIuCLCtFEsvhUdS'); + # Patch End: Fix multilingualism replaces course title + $new->create(true); $new->createReference(); $new->putInTree($this->getMapping()->getTargetId()); From e16340264e452536a2f03b7b1761b5edbef4bdab Mon Sep 17 00:00:00 2001 From: Christoph Ludolf Date: Wed, 1 Apr 2026 09:42:13 +0200 Subject: [PATCH 2/2] Container/Export: patch to remove faulty multilingalism entries after container import, part2 --- .../Export/class.ilContainerImporter.php | 16 ++++++++++++++-- .../Export/classes/class.ilImportContainer.php | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/components/ILIAS/Container/Export/class.ilContainerImporter.php b/components/ILIAS/Container/Export/class.ilContainerImporter.php index dfc9ed20899e..c425e5f3b9e5 100755 --- a/components/ILIAS/Container/Export/class.ilContainerImporter.php +++ b/components/ILIAS/Container/Export/class.ilContainerImporter.php @@ -16,6 +16,9 @@ * *********************************************************************/ +use ILIAS\ILIASObject\Properties\Translations\CachedRepository as TranslationsRepository; +use ILIAS\ILIASObject\Properties\Translations\Translations as Translations; + /** * container xml importer * @@ -29,12 +32,14 @@ class ilContainerImporter extends ilXmlImporter # Patch Start: Fix multilingualism replaces course title protected string $import_id; + protected TranslationsRepository $translations_repository; # Patch End: Fix multilingualism replaces course title public function init(): void { global $DIC; + $this->translations_repository = new TranslationsRepository($DIC->database()); $this->cont_log = ilLoggerFactory::getLogger('cont'); $this->skill_profile_service = $DIC->skills()->profile(); } @@ -106,9 +111,16 @@ public function finalProcessing(ilImportMapping $a_mapping): void } # Patch Start: Fix multilingualism replaces course title - global $DIC; $obj_id = (int) $a_mapping->getMapping('components/ILIAS/ILIASObject', 'obj', $this->import_id); - $DIC->database()->manipulate("DELETE FROM object_translation WHERE title = 'pU76w5DUIuCLCtFEsvhUdS' AND " . " obj_id = " . $DIC->database()->quote($obj_id, ilDBConstants::T_INTEGER)); + $translations = $this->translations_repository->getFor($obj_id); + $translations_new = new Translations($translations->getObjId(), [], $translations->getDefaultLanguage(), $translations->getBaseLanguage()); + $languages = $translations->getLanguages(); + foreach ($languages as $language) { + $translations_new = $language->getTitle() === 'NO TITLE' + ? $translations_new + : $translations_new->withLanguage($language); + } + $this->translations_repository->store($translations_new); # Patch End: Fix multilingualism replaces course title } diff --git a/components/ILIAS/Export/classes/class.ilImportContainer.php b/components/ILIAS/Export/classes/class.ilImportContainer.php index b43b23541b5b..4c5cefaf2c47 100755 --- a/components/ILIAS/Export/classes/class.ilImportContainer.php +++ b/components/ILIAS/Export/classes/class.ilImportContainer.php @@ -77,7 +77,7 @@ protected function createDummy(string $a_type): ilObject $new = new $class_name(); # Patch Start: Fix multilingualism replaces course title - $new->setTitle('pU76w5DUIuCLCtFEsvhUdS'); + $new->setTitle('NO TITLE'); # Patch End: Fix multilingualism replaces course title $new->create(true);