Files
wyczarujprezent.pl/modules/configurator/controllers/front/configureproduct.php
2024-10-28 22:14:22 +01:00

161 lines
9.1 KiB
PHP

<?php
class ConfiguratorConfigureproductModuleFrontController extends ModuleFrontController
{
public $token;
public function __construct()
{
parent::__construct();
$this->controller_name = 'configureproduct';
}
public function init()
{
parent::init();
$this->token = Tools::getValue('token');
if (!$this->token)
{
$this->redirect_after = '404';
$this->redirect();
}
}
public function postProcess()
{
$this->token = Tools::getValue('token');
if(Tools::isSubmit("saveConfiguration")) {
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_product` where `token` = '".pSQL($this->token)."'";
$configproduct = Db::getInstance()->getRow($q);
$id_order = Order::getIdByCartId((int)$configproduct['id_cart']);
if($id_order && (int)$id_order > 0) {
$order = new Order($id_order);
$id_cart = $order->getCartIdStatic($order->id);
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config` where `id_product` = ".(int)$configproduct['id_cart_product'];
$configsIds = Db::getInstance()->executeS($q);
$page = (int)Tools::getValue('configurator_current_page');
if($configsIds) {
foreach ($configsIds as $configId) {
if($configId['id_page'] == $page) {
$sql = "UPDATE `" . _DB_PREFIX_ . "config_product` SET `page` = '".$page."', `id_configurator_group` = '".$configId['id_configurator_group']."' where `token` = '".pSQL($this->token)."'";
Db::getInstance()->query($sql);
$sql = "INSERT INTO `" . _DB_PREFIX_ . "customized_data` (`id_customization`, `type`, `index`, `value`, `id_module`, `price`, `weight`) VALUES
('".(int)$configproduct['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);
$sql = "DELETE FROM `" . _DB_PREFIX_ . "config_field_value` where `id_config_product` = ".$configproduct['id_config_product'];
Db::getInstance()->query($sql);
$configProductId = (int)$configproduct['id_config_product'];
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`) 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']."')";
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`) 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'])."')";
Db::getInstance()->query($sql);
}
}
}
}
}
}
}
else {
$q = "SELECT `id_config`, `width`, `height`, `image` FROM `" . _DB_PREFIX_ . "config` where `id_product` = ".(int)$configproduct['id_cart_product'];
$configsIds = Db::getInstance()->executeS($q);
if($configsIds) {
foreach ($configsIds as $configId) {
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_field_value` where `id_config` = ".$configId['id_config'];
$fields = Db::getInstance()->executeS($q);
foreach ($fields as $field) {
if($value = Tools::getValue('configurator_field_input_'.$field['id_config_field'])) {
$q = "UPDATE `" . _DB_PREFIX_ . "config_field_value` SET `value` = '".$value."', `text` = '".$value."' where `id_config_field_value` = ".$field['id_config_field_value'];
Db::getInstance()->query($q);
}
}
}
}
}
$edit = (int)Tools::getValue('edit');
if($edit == 1) {
Tools::redirect('index.php?controller=cart&action=show');
}
}
}
public function setMedia()
{
parent::setMedia();
$this->addCSS(__PS_BASE_URI__ . 'modules/configurator/fonts.css');
}
public function initContent()
{
parent::initContent();
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_product` where `token` = '".pSQL($this->token)."'";
$configproduct = Db::getInstance()->getRow($q);
$id_order = Order::getIdByCartId((int)$configproduct['id_cart']);
$configurator_fields = array();
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config` where `id_product` = ".(int)$configproduct['id_cart_product'];
$configsIds = Db::getInstance()->executeS($q);
if($configsIds) {
foreach ($configsIds as $configId) {
if(!$id_order || (int)$id_order == 0) {
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_field_value` where `id_config` = ".$configId['id_config']." AND `id_config_product` = ".$configproduct['id_config_product'];
$fields = Db::getInstance()->executeS($q);
}
else {
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_field_value` where `id_config` = ".$configId['id_config']." AND `id_config_product` = ".$configproduct['id_config_product'];
$fields = Db::getInstance()->executeS($q);
if(!$fields) {
$q = "SELECT * FROM `" . _DB_PREFIX_ . "config_field` where `id_config` = ".$configId['id_config'];
$fields = Db::getInstance()->executeS($q);
}
}
$configurator_fields[] = array(
'id_config' => $configId['id_config'],
'image' => $configId['image'],
'width' => $configId['width'],
'height' => $configId['height'],
'name' => $configId['name'],
'fields' => $fields
);
}
}
$configureproductlink = $this->context->link->getModuleLink('configurator', 'configureproduct', array(
'token' => $configproduct['token']
));
$this->context->smarty->assign('configurator_fields', $configurator_fields);
$this->context->smarty->assign('configureproductlink', $configureproductlink);
$this->context->smarty->assign('config_page', $configproduct['page']);
$cart_redirect = (int)Tools::getValue('cart_redirect');
$this->context->smarty->assign('cart_redirect', $cart_redirect);
if((int)$id_order > 0) {
$order = new Order((int)$id_order);
if($order->current_state != 16) {
$this->setTemplate('module:configurator/views/templates/front/configureproduct_info.tpl');
}
else {
$this->setTemplate('module:configurator/views/templates/front/configureproduct.tpl');
}
}
else {
$this->setTemplate('module:configurator/views/templates/front/configureproduct.tpl');
}
}
}