getValue($q); if($isconfigurable && $operator === 'up' && !$id_customization) { $id_product = (int)Tools::getValue('id_product'); $id_product_attribute = (int)Tools::getValue('id_product_attribute'); $qty = (int)Tools::getValue('qty'); if($id_product && $id_product > 0) { $q = "SELECT * FROM `" . _DB_PREFIX_ . "config` where `id_product` = ".$id_product; $configsIds = Db::getInstance()->executeS($q); $q = "SELECT * FROM `" . _DB_PREFIX_ . "config_product` where `id_cart` = ".Context::getContext()->cart->id." and `id_cart_product` = ".$id_product." and `id_customization` = ".(int)$product['id_customization']; $prevfields = Db::getInstance()->executeS($q); $bytes = random_bytes(20); $page = (int)Tools::getValue('configurator_current_page'); $sql = "INSERT INTO `" . _DB_PREFIX_ . "customization` (`id_product_attribute`, `id_address_delivery`, `id_cart`, `id_product`, `quantity`, `quantity_refunded`, `quantity_returned`, `in_cart`) VALUES ('".$id_product_attribute."','".Context::getContext()->cart->id_address_delivery."','".Context::getContext()->cart->id."', '".$id_product."', '".$qty."', '0', '0', '1')"; Db::getInstance()->query($sql); $id_customization = Db::getInstance()->Insert_ID(); $sql = "DELETE FROM `" . _DB_PREFIX_ . "config_product` where `id_cart` = ".Context::getContext()->cart->id." and `id_cart_product` = ".$id_product." and `id_customization` = ".(int)$id_customization; Db::getInstance()->query($sql); if($configsIds) { foreach ($configsIds as $configId) { if($configId['id_page'] == $page) { $sql = "INSERT INTO `" . _DB_PREFIX_ . "config_product` (`id_cart`, `id_cart_product`, `token`, `page`, `id_customization`, `id_configurator_group`, `date`) VALUES ('".Context::getContext()->cart->id."','".$id_product."','".bin2hex($bytes)."', '".$page."', '".$id_customization."', '".$configId['id_configurator_group']."', '".date("Y-m-d H:i:s")."')"; Db::getInstance()->query($sql); $configProductId = Db::getInstance()->Insert_ID(); $sql = "INSERT INTO `" . _DB_PREFIX_ . "customized_data` (`id_customization`, `type`, `index`, `value`, `id_module`, `price`, `weight`) VALUES ('".$id_customization."','1','1', '', '0', '0', '0')"; Db::getInstance()->query($sql); $q = "SELECT * FROM `" . _DB_PREFIX_ . "config_field` where `id_config` = ".$configId['id_config']; $fields = Db::getInstance()->executeS($q); foreach ($fields as $field) { foreach ($prevfields as $prevfield) { $sql = "DELETE FROM `" . _DB_PREFIX_ . "config_field_value` where `id_config_field` = ".$field['id_config_field']." and `id_config_product` = ".$prevfield['id_config_product']; Db::getInstance()->query($sql); } } foreach ($fields as $field) { if($field['type'] == 1) { if($value = Tools::getValue('configurator_field_input_'.$field['id_config_field'])) { $sql = "INSERT INTO `" . _DB_PREFIX_ . "config_field_value` (`id_config_field`, `id_config_product`, `value`, `id_config`, `x`, `y`, `width`, `height`, `rotation`, `font`, `fontsize`, `color`, `text`, `type`, `textalign`, `active`, `characters_limit`, `background_color`) VALUES ('".$field['id_config_field']."','".$configProductId."','".pSQL($value)."', '".$field['id_config']."', '".$field['x']."', '".$field['y']."', '".$field['width']."', '".$field['height']."', '".$field['rotation']."', '".$field['font']."', '".$field['fontsize']."', '".$field['color']."', '".pSQL($value)."', '".$field['type']."', '".$field['textalign']."', '".Tools::getIsset('configurator_field_checkbox_'.$field['id_config_field'])."', '".$field['characters_limit']."', '".$field['background_color']."')"; Db::getInstance()->query($sql); } } else { if($value = Tools::getValue('configurator_field_img_'.$field['id_config_field'])) { $sql = "INSERT INTO `" . _DB_PREFIX_ . "config_field_value` (`id_config_field`, `id_config_product`, `value`, `id_config`, `x`, `y`, `width`, `height`, `rotation`, `font`, `fontsize`, `color`, `text`, `type`, `textalign`, `active`, `background_color`) VALUES ('".$field['id_config_field']."','".$configProductId."','".pSQL($value)."', '".$field['id_config']."', '".$field['x']."', '".$field['y']."', '".$field['width']."', '".$field['height']."', '".$field['rotation']."', '".$field['font']."', '".$field['fontsize']."', '".$field['color']."', '".pSQL($value)."', '".$field['type']."', '".$field['textalign']."', '".Tools::getIsset('configurator_field_checkbox_'.$field['id_config_field'])."', '".$field['background_color']."')"; Db::getInstance()->query($sql); } } } } } } } } return parent::updateQty( $quantity, $id_product, $id_product_attribute, $id_customization, $operator, $id_address_delivery, $shop, $auto_add_cart_rule, $skipAvailabilityCheckOutOfStock, $preserveGiftRemoval, $useOrderPrices ); } }