95 lines
6.8 KiB
PHP
95 lines
6.8 KiB
PHP
<?php
|
|
|
|
class Cart extends CartCore
|
|
{
|
|
public function updateQty(
|
|
$quantity,
|
|
$id_product,
|
|
$id_product_attribute = null,
|
|
$id_customization = false,
|
|
$operator = 'up',
|
|
$id_address_delivery = 0,
|
|
Shop $shop = null,
|
|
$auto_add_cart_rule = true,
|
|
$skipAvailabilityCheckOutOfStock = false,
|
|
bool $preserveGiftRemoval = true,
|
|
bool $useOrderPrices = false
|
|
) {
|
|
$q = "SELECT `isconfigurable` FROM `" . _DB_PREFIX_ . "product` where `id_product` = ".$id_product;
|
|
$isconfigurable = Db::getInstance()->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
|
|
);
|
|
}
|
|
}
|