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