Current File : /var/www/vinorea/modules/ipexportimport/classes/EIADataSaver.php
<?php
/**
 *
 * NOTICE OF LICENSE
 *
 *  @author    SmartPresta <tehran.alishov@gmail.com>
 *  @copyright 2024 SmartPresta
 *  @license   Commercial License
 */

if (!defined('_PS_VERSION_')) {
    exit;
}

class EIADataSaver
{

    public $module;

    public function __construct($module)
    {
        $this->module = $module;
    }

    public function saveConfig()
    {
        $config = pSQL(Tools::getValue('config'));
        $datatables = Tools::getValue('datatables');
        $ieType = pSQL(Tools::getValue('ieType'));
//        print_r($datatables);
//        die;
        $name = pSQL(Tools::getValue('name'));
        if (!$name) {
            die(json_encode(array('type' => 'danger', 'message' => $this->module->l('Enter a name.', 'EIADataSaver'))));
        }
//        $config = pSQL(urldecode($config));
//        $config = pSQL($config);
        $sql = 'SELECT
                    `id_ip' . $ieType . '` 
                FROM `' . _DB_PREFIX_ . 'ip' . $ieType . "` 
                WHERE `name` = '" . $name . "';";
        $result = Db::getInstance()->getValue($sql);
        if (!empty($result)) {
            if (Db::getInstance()->update(
                'ip' . $ieType,
                array('name' => $name, 'configuration' => $config, 'datatables' => str_replace('&quuot;', '\\\"', $datatables)),
                'id_ip' . $ieType . ' = ' . (int) $result
            )) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('Changes were saved.', 'EIADataSaver'),
                        'configs' => Context::getContext()->controller->getConfigs(),
                )));
            } else {
                die(json_encode(array(
                        'type' => 'danger',
                        'message' => $this->module->l('Changes couldn\'t be saved.', 'EIADataSaver')
                )));
            }
        } else {
            if (Db::getInstance()->insert(
                'ip' . $ieType,
                array('name' => $name, 'configuration' => $config, 'datatables' => str_replace('&quuot;', '\\\"', $datatables))
            )) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('Changes were saved.', 'EIADataSaver'),
                        'configs' => Context::getContext()->controller->getConfigs(),
                )));
            } else {
                die(json_encode(array(
                        'type' => 'danger',
                        'message' => $this->module->l('Changes couldn\'t be saved.', 'EIADataSaver')
                )));
            }
        }
    }

    public function deleteConfig()
    {
        $id = (int) Tools::getValue('id');
        $ieType = pSQL(Tools::getValue('ieType'));
        if (Db::getInstance()->delete('ip' . $ieType, 'id_ip' . $ieType . " = $id AND `name` <> 'catalog_default'")) {
            die(json_encode(array(
                    'type' => 'success',
                    'message' => $this->module->l('Template was deleted.', 'EIADataSaver'),
                    'configs' => Context::getContext()->controller->getConfigs(),
            )));
        } else {
            die(json_encode(array(
                    'type' => 'danger',
                    'message' => $this->module->l('Template couldn\'t be deleted.', 'EIADataSaver'),
            )));
        }
    }

    public function saveScheduleEmail()
    {
        $id = (int) Tools::getValue('id');
        $data = Tools::getValue('data');
        $ieType = pSQL(Tools::getValue('ieType'));

        if (!Validate::isEmail($data['address'])) {
            die(json_encode(array(
                    'type' => 'error',
                    'message' => $this->module->l('The email is not valid.', 'EIADataSaver')
            )));
        }

        if ($id) {
            if (Db::getInstance()->update('ip' . $ieType . '_email', $data, 'id_ip' . $ieType . '_email = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully updated.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be updated.', 'EIADataSaver')
                )));
            }
        } else {
            if (Db::getInstance()->insert('ip' . $ieType . '_email', $data)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully added.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be added.', 'EIADataSaver')
                )));
            }
        }
    }

    public function deleteScheduleEmail()
    {
        $id = (int) Tools::getValue('id');
        $ieType = pSQL(Tools::getValue('ieType'));
        if ($id) {
            if (Db::getInstance()->delete('ip' . $ieType . '_email', 'id_ip' . $ieType . '_email = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully deleted.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be deleted.', 'EIADataSaver')
                )));
            }
        } else {
            die(json_encode(array('type' => 'error',
                    'message' => $this->module->l('Invalid arguments.', 'EIADataSaver')
            )));
        }
    }

    public function saveScheduleURL()
    {
        $id = (int) Tools::getValue('id');
        $data = Tools::getValue('data');
        $ieType = pSQL(Tools::getValue('ieType'));

        if (!filter_var($data['url'], FILTER_VALIDATE_URL)) {
            die(json_encode(array(
                    'type' => 'error',
                    'message' => $this->module->l('The URL is not valid.', 'EIADataSaver')
            )));
        }

        if ($id) {
            if (Db::getInstance()->update('ip' . $ieType . '_url', $data, 'id_ip' . $ieType . '_url = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully updated.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be updated.', 'EIADataSaver')
                )));
            }
        } else {
            if (Db::getInstance()->insert('ip' . $ieType . '_url', $data)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully added.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be added.', 'EIADataSaver')
                )));
            }
        }
    }
    
    public function deleteScheduleURL()
    {
        $id = (int) Tools::getValue('id');
        $ieType = pSQL(Tools::getValue('ieType'));
        if ($id) {
            if (Db::getInstance()->delete('ip' . $ieType . '_url', 'id_ip' . $ieType . '_url = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully deleted.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array('type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be deleted.', 'EIADataSaver')
                )));
            }
        } else {
            die(json_encode(array('type' => 'error',
                    'message' => $this->module->l('Invalid arguments.', 'EIADataSaver')
            )));
        }
    }
    
    public function saveScheduleFTP()
    {
        $id = (int) Tools::getValue('id');
        $data = Tools::getValue('data');
        $ieType = pSQL(Tools::getValue('ieType'));
        if (!is_numeric($data['port'])) {
            $data['port'] = '';
        }

        if ($id) {
            if (Db::getInstance()->update('ip' . $ieType . '_ftp', $data, 'id_ip' . $ieType . '_ftp = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully updated.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array(
                        'type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be updated.', 'EIADataSaver')
                )));
            }
        } else {
            if (Db::getInstance()->insert('ip' . $ieType . '_ftp', $data)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully added.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array(
                        'type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be added.', 'EIADataSaver')
                )));
            }
        }
    }

    public function deleteScheduleFTP()
    {
        $id = (int) Tools::getValue('id');
        $ieType = pSQL(Tools::getValue('ieType'));
        if ($id) {
            if (Db::getInstance()->delete('ip' . $ieType . '_ftp', 'id_ip' . $ieType . '_ftp = ' . $id)) {
                die(json_encode(array(
                        'type' => 'success',
                        'message' => $this->module->l('The data was successfully deleted.', 'EIADataSaver')
                )));
            } else {
                die(json_encode(array(
                        'type' => 'error',
                        'message' => $this->module->l('The data couldn\'t be deleted.', 'EIADataSaver')
                )));
            }
        } else {
            die(json_encode(array(
                    'type' => 'error',
                    'message' => $this->module->l('Invalid arguments.', 'EIADataSaver')
            )));
        }
    }

    public function updateSchedule()
    {
        $key = pSQL(Tools::getValue('key'));
        $value = pSQL(Tools::getValue('value'));

        if (Configuration::updateGlobalValue($key, $value)) {
            die(json_encode(array(
                    'type' => 'success',
                    'message' => $this->module->l('Successfully updated.', 'EIADataSaver'),
            )));
        } else {
            die(json_encode(array(
                    'type' => 'error',
                    'message' => $this->module->l('Couldn\'t update.', 'EIADataSaver'),
            )));
        }
    }

    public function setExportSetting($datas = array())
    {
        $res = true;
        foreach ($datas as $data) {
            $res &= Db::getInstance()->insert('ipexport', $data, false, true, Db::INSERT_IGNORE);
        }

        return $res;
    }

    public function setImportSetting($datas = array())
    {
        $res = true;
        foreach ($datas as $data) {
            $res &= Db::getInstance()->insert('ipimport', $data, false, true, Db::INSERT_IGNORE);
        }

        return $res;
    }
}