161 lines
9.1 KiB
PHP
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');
|
|
}
|
|
}
|
|
}
|