From e6ca6ab3c3380f8d4f4203379da80e8496892c48 Mon Sep 17 00:00:00 2001 From: Alexander Ebert Date: Wed, 12 Apr 2017 12:21:06 +0200 Subject: [PATCH] Force overwriting of cronjob descriptions These phrases may already exist due to the import of existing language files. Overwriting them at all times avoids issues in these cases and saves us an extra roundtrip to manually delete them first. --- .../lib/data/cronjob/CronjobEditor.class.php | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/wcfsetup/install/files/lib/data/cronjob/CronjobEditor.class.php b/wcfsetup/install/files/lib/data/cronjob/CronjobEditor.class.php index 6225ee9909..9ee8f38101 100644 --- a/wcfsetup/install/files/lib/data/cronjob/CronjobEditor.class.php +++ b/wcfsetup/install/files/lib/data/cronjob/CronjobEditor.class.php @@ -46,7 +46,7 @@ class CronjobEditor extends DatabaseObjectEditor implements IEditableCachedObjec // save cronjob description if (!empty($descriptions)) { $cronjobEditor = new self($cronjob); - $cronjobEditor->saveDescriptions($descriptions, false); + $cronjobEditor->saveDescriptions($descriptions); } /** @noinspection PhpIncompatibleReturnTypeInspection */ @@ -57,10 +57,9 @@ class CronjobEditor extends DatabaseObjectEditor implements IEditableCachedObjec * Saves the descriptions of the cronjob in language items. * * @param string[] $descriptions - * @param boolean $deleteOldDescriptions * @since 3.0 */ - protected function saveDescriptions(array $descriptions, $deleteOldDescriptions = true) { + protected function saveDescriptions(array $descriptions) { // set default value if (isset($descriptions[''])) { $defaultValue = $descriptions['']; @@ -95,18 +94,12 @@ class CronjobEditor extends DatabaseObjectEditor implements IEditableCachedObjec $languageCategory = LanguageFactory::getInstance()->getCategory('wcf.acp.cronjob'); } - // delete old descriptions first - if ($deleteOldDescriptions) { - $sql = "DELETE FROM wcf".WCF_N."_language_item - WHERE languageItem = ?"; - $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute(['wcf.acp.cronjob.description.cronjob'.$this->cronjobID]); - } - // save new descriptions - $sql = "INSERT INTO wcf".WCF_N."_language_item - (languageID, languageItem, languageItemValue, languageCategoryID, packageID) - VALUES (?, ?, ?, ?, ?)"; + $sql = "INSERT INTO wcf".WCF_N."_language_item + (languageID, languageItem, languageItemValue, languageCategoryID, packageID) + VALUES (?, ?, ?, ?, ?) + ON DUPLICATE KEY UPDATE languageItemValue = VALUES(languageItemValue), + languageCategoryID = VALUES(languageCategoryID)"; $statement = WCF::getDB()->prepareStatement($sql); foreach ($languages as $language) { -- 2.20.1