From deb142095860545d2257c21b46050375aa6458b6 Mon Sep 17 00:00:00 2001 From: Marcel Werk Date: Thu, 16 Feb 2017 12:20:33 +0100 Subject: [PATCH] Fixed duplicate key issue during language import --- .../data/language/LanguageEditor.class.php | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/wcfsetup/install/files/lib/data/language/LanguageEditor.class.php b/wcfsetup/install/files/lib/data/language/LanguageEditor.class.php index 5da2e35a49..95cae4da48 100644 --- a/wcfsetup/install/files/lib/data/language/LanguageEditor.class.php +++ b/wcfsetup/install/files/lib/data/language/LanguageEditor.class.php @@ -719,38 +719,38 @@ class LanguageEditor extends DatabaseObjectEditor implements IEditableCachedObje */ public static function copyLanguageContent($sourceLanguageID, $destinationLanguageID) { // article content - $sql = "INSERT INTO wcf".WCF_N."_article_content - (articleID, languageID, title, teaser, content, imageID, hasEmbeddedObjects) - SELECT articleID, ?, title, teaser, content, imageID, hasEmbeddedObjects - FROM wcf".WCF_N."_article_content - WHERE languageID = ?"; + $sql = "INSERT IGNORE INTO wcf".WCF_N."_article_content + (articleID, languageID, title, teaser, content, imageID, hasEmbeddedObjects) + SELECT articleID, ?, title, teaser, content, imageID, hasEmbeddedObjects + FROM wcf".WCF_N."_article_content + WHERE languageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute([$destinationLanguageID, $sourceLanguageID]); // box content - $sql = "INSERT INTO wcf".WCF_N."_box_content - (boxID, languageID, title, content, imageID, hasEmbeddedObjects) - SELECT boxID, ?, title, content, imageID, hasEmbeddedObjects - FROM wcf".WCF_N."_box_content - WHERE languageID = ?"; + $sql = "INSERT IGNORE INTO wcf".WCF_N."_box_content + (boxID, languageID, title, content, imageID, hasEmbeddedObjects) + SELECT boxID, ?, title, content, imageID, hasEmbeddedObjects + FROM wcf".WCF_N."_box_content + WHERE languageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute([$destinationLanguageID, $sourceLanguageID]); // media content - $sql = "INSERT INTO wcf".WCF_N."_media_content - (mediaID, languageID, title, caption, altText) - SELECT mediaID, ?, title, caption, altText - FROM wcf".WCF_N."_media_content - WHERE languageID = ?"; + $sql = "INSERT IGNORE INTO wcf".WCF_N."_media_content + (mediaID, languageID, title, caption, altText) + SELECT mediaID, ?, title, caption, altText + FROM wcf".WCF_N."_media_content + WHERE languageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute([$destinationLanguageID, $sourceLanguageID]); // page content - $sql = "INSERT INTO wcf".WCF_N."_page_content - (pageID, languageID, title, content, metaDescription, metaKeywords, customURL, hasEmbeddedObjects) - SELECT pageID, ?, title, content, metaDescription, metaKeywords, CASE WHEN customURL <> '' THEN CONCAT(customURL, '_', ?) ELSE '' END, hasEmbeddedObjects - FROM wcf".WCF_N."_page_content - WHERE languageID = ?"; + $sql = "INSERT IGNORE INTO wcf".WCF_N."_page_content + (pageID, languageID, title, content, metaDescription, metaKeywords, customURL, hasEmbeddedObjects) + SELECT pageID, ?, title, content, metaDescription, metaKeywords, CASE WHEN customURL <> '' THEN CONCAT(customURL, '_', ?) ELSE '' END, hasEmbeddedObjects + FROM wcf".WCF_N."_page_content + WHERE languageID = ?"; $statement = WCF::getDB()->prepareStatement($sql); $statement->execute([$destinationLanguageID, $destinationLanguageID, $sourceLanguageID]); -- 2.20.1