From: Marcel Werk Date: Thu, 16 Feb 2017 11:20:33 +0000 (+0100) Subject: Fixed duplicate key issue during language import X-Git-Tag: 3.0.3~54 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=deb142095860545d2257c21b46050375aa6458b6;p=GitHub%2FWoltLab%2FWCF.git Fixed duplicate key issue during language import --- 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]);