From cafe2ed9d271a89acf5c2ccc95448a4efeb450f8 Mon Sep 17 00:00:00 2001 From: gRoussac Date: Thu, 3 Oct 2013 16:08:53 +0200 Subject: [PATCH] [-] BO : Fix bug #PSCFV-10064, could not import deature in multilang, thanks @E.Bigfoot --- classes/FeatureValue.php | 33 ++++++++++++++++----- controllers/admin/AdminImportController.php | 2 +- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/classes/FeatureValue.php b/classes/FeatureValue.php index b95f8ca16..97b07476e 100644 --- a/classes/FeatureValue.php +++ b/classes/FeatureValue.php @@ -128,15 +128,32 @@ class FeatureValueCore extends ObjectModel return $tab['value']; } - public static function addFeatureValueImport($id_feature, $value) + public static function addFeatureValueImport($id_feature, $value, $id_product = null, $id_lang = null) { - $id_feature_value = Db::getInstance()->getValue(' - SELECT fv.`id_feature_value` - FROM '._DB_PREFIX_.'feature_value fv - LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) - WHERE `value` = \''.pSQL($value).'\' - AND fv.`id_feature` = '.(int)$id_feature.' - GROUP BY fv.`id_feature_value`'); + if (!is_null($id_product) && $id_product) + { + $id_feature_value = Db::getInstance()->getValue(' + SELECT `id_feature_value` + FROM '._DB_PREFIX_.'feature_product + WHERE `id_feature` = '.(int)$id_feature.' + AND `id_product` = '.(int)$id_product); + + if ($id_feature_value && !is_null($id_lang) && $id_lang) + Db::getInstance()->execute(' + UPDATE '._DB_PREFIX_.'feature_value_lang + SET `value` = \''.pSQL($value).'\' + WHERE `id_feature_value` = '.(int)$id_feature_value.' + AND `id_lang` = '.(int)$id_lang); + } + else + $id_feature_value = Db::getInstance()->getValue(' + SELECT fv.`id_feature_value` + FROM '._DB_PREFIX_.'feature_value fv + LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) + WHERE `value` = \''.pSQL($value).'\' + AND fv.`id_feature` = '.(int)$id_feature.' + GROUP BY fv.`id_feature_value`'); + if ($id_feature_value) return (int)$id_feature_value; diff --git a/controllers/admin/AdminImportController.php b/controllers/admin/AdminImportController.php index c7c183816..03e0bb0de 100644 --- a/controllers/admin/AdminImportController.php +++ b/controllers/admin/AdminImportController.php @@ -1543,7 +1543,7 @@ class AdminImportControllerCore extends AdminController if(!empty($feature_name) && !empty($feature_value)) { $id_feature = Feature::addFeatureImport($feature_name, $position); - $id_feature_value = FeatureValue::addFeatureValueImport($id_feature, $feature_value); + $id_feature_value = FeatureValue::addFeatureValueImport($id_feature, $feature_value, $product->id, $id_lang); Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value); } }