Files
wyczarujprezent.pl/override/classes/Cart.php
2024-10-28 22:14:22 +01:00

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
);
}
}