Fixed: admin is able to save cart rules with empty room type selections
This commit is contained in:
@@ -285,7 +285,7 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
if (is_array($rule_array = Tools::getValue('product_rule_'.$rule_group_id)) && count($rule_array)) {
|
||||
foreach ($rule_array as $rule_id) {
|
||||
if (Tools::getValue('product_rule_'.$rule_group_id.'_'.$rule_id.'_type') == 'products'
|
||||
&& in_array($reduction_product, Tools::getValue('product_rule_select_'.$rule_group_id.'_'.$rule_id))) {
|
||||
&& in_array($reduction_product, Tools::getValue('product_rule_select_'.$rule_group_id.'_'.$rule_id, []))) {
|
||||
$already_restricted = true;
|
||||
break 2;
|
||||
}
|
||||
@@ -432,23 +432,32 @@ class AdminCartRulesControllerCore extends AdminController
|
||||
// Add product rule restrictions
|
||||
if (Tools::getValue('product_restriction') && is_array($ruleGroupArray = Tools::getValue('product_rule_group')) && count($ruleGroupArray)) {
|
||||
foreach ($ruleGroupArray as $ruleGroupId) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_group` (`id_cart_rule`, `quantity`)
|
||||
VALUES ('.(int)$currentObject->id.', '.(int)Tools::getValue('product_rule_group_'.$ruleGroupId.'_quantity').')');
|
||||
$id_product_rule_group = Db::getInstance()->Insert_ID();
|
||||
|
||||
if (is_array($ruleArray = Tools::getValue('product_rule_'.$ruleGroupId)) && count($ruleArray)) {
|
||||
foreach ($ruleArray as $ruleId) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule` (`id_product_rule_group`, `type`)
|
||||
VALUES ('.(int)$id_product_rule_group.', "'.pSQL(Tools::getValue('product_rule_'.$ruleGroupId.'_'.$ruleId.'_type')).'")');
|
||||
$id_product_rule = Db::getInstance()->Insert_ID();
|
||||
|
||||
$values = array();
|
||||
foreach (Tools::getValue('product_rule_select_'.$ruleGroupId.'_'.$ruleId) as $id) {
|
||||
$values[] = '('.(int)$id_product_rule.','.(int)$id.')';
|
||||
foreach ($ruleArray as $ruleKey => $ruleId) {
|
||||
if (!Tools::getValue('product_rule_select_'.$ruleGroupId.'_'.$ruleId)) {
|
||||
unset($ruleArray[$ruleKey]);
|
||||
}
|
||||
$values = array_unique($values);
|
||||
if (count($values)) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_value` (`id_product_rule`, `id_item`) VALUES '.implode(',', $values));
|
||||
}
|
||||
|
||||
if ($ruleArray) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_group` (`id_cart_rule`, `quantity`)
|
||||
VALUES ('.(int)$currentObject->id.', '.(int)Tools::getValue('product_rule_group_'.$ruleGroupId.'_quantity').')');
|
||||
$id_product_rule_group = Db::getInstance()->Insert_ID();
|
||||
|
||||
foreach ($ruleArray as $ruleId) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule` (`id_product_rule_group`, `type`)
|
||||
VALUES ('.(int)$id_product_rule_group.', "'.pSQL(Tools::getValue('product_rule_'.$ruleGroupId.'_'.$ruleId.'_type')).'")');
|
||||
$id_product_rule = Db::getInstance()->Insert_ID();
|
||||
$values = array();
|
||||
if ($selectedProducts = Tools::getValue('product_rule_select_'.$ruleGroupId.'_'.$ruleId)) {
|
||||
foreach ($selectedProducts as $id) {
|
||||
$values[] = '('.(int)$id_product_rule.','.(int)$id.')';
|
||||
}
|
||||
}
|
||||
$values = array_unique($values);
|
||||
if (count($values)) {
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_value` (`id_product_rule`, `id_item`) VALUES '.implode(',', $values));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user