1409 lines
78 KiB
PHP
1409 lines
78 KiB
PHP
<?php
|
||
/**
|
||
* NOTICE OF LICENSE
|
||
*
|
||
* This source file is subject to a commercial license from MigrationPro MMC
|
||
* Use, copy, modification or distribution of this source file without written
|
||
* license agreement from the MigrationPro MMC is strictly forbidden.
|
||
* In order to obtain a license, please contact us: migrationprommc@gmail.com
|
||
*
|
||
* INFORMATION SUR LA LICENCE D'UTILISATION
|
||
*
|
||
* L'utilisation de ce fichier source est soumise a une licence commerciale
|
||
* concedee par la societe MigrationPro MMC
|
||
* Toute utilisation, reproduction, modification ou distribution du present
|
||
* fichier source sans contrat de licence ecrit de la part de la MigrationPro MMC est
|
||
* expressement interdite.
|
||
* Pour obtenir une licence, veuillez contacter la MigrationPro MMC a l'adresse: migrationprommc@gmail.com
|
||
*
|
||
* @author Edgar I.
|
||
* @copyright Copyright (c) 2012-2016 MigrationPro MMC
|
||
* @license Commercial license
|
||
* @package MigrationPro: Prestashop To PrestaShop
|
||
*/
|
||
|
||
if (!defined('_PS_VERSION_')) {
|
||
exit;
|
||
}
|
||
|
||
require_once(_PS_MODULE_DIR_ . 'migrationpro/classes/loggers/MigrationProDBWarningLogger.php');
|
||
require_once(_PS_MODULE_DIR_ . 'migrationpro/classes/loggers/MigrationProDBErrorLogger.php');
|
||
|
||
class AdminMigrationProController extends AdminController
|
||
{
|
||
// --- response vars:
|
||
|
||
public $errors;
|
||
protected $response;
|
||
|
||
// --- request vars:
|
||
|
||
protected $stepNumber;
|
||
protected $toStepNumber;
|
||
|
||
// -- dynamic vars:
|
||
|
||
protected $forceIds = true;
|
||
protected $forceManufacturerIds = false;
|
||
protected $forceCategoryIds = false;
|
||
protected $forceCarrierIds = false;
|
||
protected $forceProductIds = false;
|
||
protected $forceCatalogPriceRuleIds = false;
|
||
protected $forceCustomerIds = false;
|
||
protected $forceOrderIds = false;
|
||
protected $forceCMSIds = false;
|
||
|
||
protected $ps_validation_errors = true;
|
||
|
||
protected $truncate = false;
|
||
|
||
// --- source cart vars:
|
||
|
||
protected $url_cart;
|
||
protected $server_path = '/modules/migrationproserver/server.php';
|
||
// protected $server_path = '/migration_pro/server.php';
|
||
protected $token_cart;
|
||
protected $cms;
|
||
protected $image_category;
|
||
protected $image_carrier;
|
||
protected $image_product;
|
||
protected $image_manufacturer;
|
||
protected $image_supplier;
|
||
protected $image_employee;
|
||
protected $table_prefix;
|
||
protected $version;
|
||
protected $charset;
|
||
protected $blowfish_key;
|
||
protected $cookie_key;
|
||
protected $mapping;
|
||
protected $languagesForQuery;
|
||
protected $speed;
|
||
protected $module;
|
||
|
||
// --- helper objects
|
||
|
||
protected $query;
|
||
protected $client;
|
||
protected $recent_data;
|
||
public function __construct()
|
||
{
|
||
$this->display = 'edit';
|
||
parent::__construct();
|
||
$this->controller_type = 'moduleadmin'; //instead of AdminController’s admin
|
||
$tab = new Tab($this->id); // an instance with your tab is created; if the tab is not attached to the module, the exception will be thrown
|
||
if (!$tab->module) {
|
||
throw new PrestaShopException('Admin tab ' . get_class($this) . ' is not a module tab');
|
||
}
|
||
$this->module = Module::getInstanceByName($tab->module);
|
||
if (!$this->module->id) {
|
||
throw new PrestaShopException("Module {$tab->module} not found");
|
||
}
|
||
$this->tabAccess = Profile::getProfileAccess($this->context->employee->id_profile, Tab::getIdFromClassName('AdminMigrationPro'));
|
||
|
||
$this->stepNumber = (int)Tools::getValue('step_number');
|
||
$this->toStepNumber = (int)Tools::getValue('to_step_number');
|
||
|
||
$this->initParams();
|
||
if ($this->stepNumber > 1 || self::isEmpty($this->stepNumber)) {
|
||
$this->mapping = MigrationProMapping::listMapping(true, true);
|
||
|
||
if (isset($this->mapping['languages'])) {
|
||
// -- unset language where value = 0
|
||
if (($key = array_search(0, $this->mapping['languages'])) !== false) {
|
||
unset($this->mapping['languages'][$key]);
|
||
}
|
||
$keys = array_keys($this->mapping['languages']);
|
||
$this->languagesForQuery = implode(',', $keys);
|
||
}
|
||
|
||
if (!self::isEmpty($this->url_cart) && !self::isEmpty($this->token_cart)) {
|
||
$this->client = new EDClient($this->url_cart . $this->server_path, $this->token_cart);
|
||
if (Configuration::get($this->module->name . '_debug_mode')) {
|
||
$this->client->debugOn();
|
||
} else {
|
||
$this->client->debugOff();
|
||
}
|
||
}
|
||
$this->query = new EDQuery();
|
||
$this->query->setVersion($this->version);
|
||
$this->query->setCart($this->cms);
|
||
$this->query->setPrefix($this->table_prefix);
|
||
$this->query->setLanguages($this->languagesForQuery);
|
||
$this->query->setRowCount($this->speed);
|
||
$this->query->setRecentData($this->recent_data);
|
||
}
|
||
|
||
if (Shop::getContext() == Shop::CONTEXT_ALL || Shop::getContext() == Shop::CONTEXT_GROUP) {
|
||
$allShops = Shop::getCompleteListOfShopsID();
|
||
Shop::setContext(Shop::CONTEXT_SHOP, $allShops[0]);
|
||
}
|
||
}
|
||
|
||
|
||
private function initHelperObjects()
|
||
{
|
||
$this->mapping = MigrationProMapping::listMapping(true, true);
|
||
|
||
if (isset($this->mapping['languages'])) {
|
||
// -- unset language where value = 0
|
||
if (($key = array_search(0, $this->mapping['languages'])) !== false) {
|
||
unset($this->mapping['languages'][$key]);
|
||
}
|
||
$keys = array_keys($this->mapping['languages']);
|
||
$this->languagesForQuery = implode(',', $keys);
|
||
}
|
||
|
||
if (!self::isEmpty($this->url_cart) && !self::isEmpty($this->token_cart)) {
|
||
$this->client = new EDClient($this->url_cart . $this->server_path, $this->token_cart);
|
||
if (Configuration::get($this->module->name . '_debug_mode')) {
|
||
$this->client->debugOn();
|
||
} else {
|
||
$this->client->debugOff();
|
||
}
|
||
}
|
||
$this->query = new EDQuery();
|
||
$this->query->setVersion($this->version);
|
||
$this->query->setCart($this->cms);
|
||
$this->query->setPrefix($this->table_prefix);
|
||
$this->query->setLanguages($this->languagesForQuery);
|
||
$this->query->setRowCount($this->speed);
|
||
$this->query->setRecentData($this->recent_data);
|
||
}
|
||
|
||
// --- request processes
|
||
public function postProcess()
|
||
{
|
||
parent::postProcess();
|
||
}
|
||
|
||
public function clearSmartyCache()
|
||
{
|
||
Tools::enableCache();
|
||
Tools::clearCache($this->context->smarty);
|
||
Tools::restoreCacheSettings();
|
||
}
|
||
|
||
public function ajaxProcessGenerateZip()
|
||
{
|
||
if (!Configuration::get('migrationpro_token_is_generated')) {
|
||
if (!Configuration::get('migrationpro_token')) {
|
||
$token = md5(Configuration::get('PS_SHOP_DOMAIN') . end(explode('\\', _PS_ADMIN_DIR_)));
|
||
Configuration::updateValue('migrationpro_token', $token);
|
||
}
|
||
|
||
$txt_file = Tools::file_get_contents(_PS_MODULE_DIR_ . '/migrationpro/views/templates/admin/server.tpl');
|
||
$txt_file = str_replace("[[[[[[sample_token]]]]]]]", Configuration::get('migrationpro_token'), $txt_file);
|
||
$txt_file = str_replace("[[[[[[old_domain]]]]]]]", Configuration::get('PS_SHOP_DOMAIN'), $txt_file);
|
||
file_put_contents(_PS_MODULE_DIR_ . '/migrationpro/assets/server.php', $txt_file);
|
||
|
||
$zip = new ZipArchive;
|
||
if ($zip->open(_PS_MODULE_DIR_ . 'migrationpro/assets/migrationproserver.zip')
|
||
) {
|
||
// Add file to the zip file
|
||
$zip->addFile(_PS_MODULE_DIR_ . '/migrationpro/assets/server.php', 'migrationproserver/server.php');
|
||
|
||
// All files are added, so close the zip file.
|
||
$zip->close();
|
||
}
|
||
Configuration::updateValue('migrationpro_token_is_generated', '1');
|
||
}
|
||
}
|
||
|
||
|
||
public function ajaxProcessValidateStep()
|
||
{
|
||
$this->response = array('has_error' => false, 'has_warning' => false);
|
||
|
||
if (!$this->tabAccess['edit']) {
|
||
$this->errors[] = EDImport::displayError($this->module->l('You do not have permission to use this wizard.'));
|
||
} else {
|
||
// -- reset old data and response url to start new migration
|
||
if (Tools::getIsset('resume')) {
|
||
$this->response['step_form'] = $this->module->renderStepThree();
|
||
} elseif (Tools::getValue('to_step_number') >= Tools::getValue('step_number')) {
|
||
$this->validateStepFieldsValue();
|
||
}
|
||
}
|
||
|
||
if (count($this->errors)) {
|
||
$this->response['has_error'] = true;
|
||
$this->response['errors'] = $this->errors;
|
||
}
|
||
if (count($this->warnings)) {
|
||
$this->response['has_warning'] = true;
|
||
$this->response['warnings'] = $this->warnings;
|
||
}
|
||
|
||
die(Tools::jsonEncode($this->response));
|
||
}
|
||
|
||
// --- validate functions
|
||
|
||
private function validateStepFieldsValue()
|
||
{
|
||
if ($this->stepNumber == 1) {
|
||
// validate url
|
||
if (!Tools::getValue('source_shop_url')) {
|
||
$this->errors[] = $this->module->l('Source PrestaShop URL is required.');
|
||
} elseif (!Validate::isAbsoluteUrl(Tools::getValue('source_shop_url'))) {
|
||
$this->errors[] = $this->module->l('Please enter a valid source PrestaShop URL.');
|
||
}
|
||
|
||
if ($this->truncateModuleTables()) {
|
||
$this->errors[] = $this->module->l('Permission access to truncate module tables is denied! Please contact with support team!');
|
||
}
|
||
|
||
if (self::isEmpty($this->errors)) {
|
||
$sourceURL = Tools::getValue('source_shop_url') . $this->server_path;
|
||
$this->client = new EDClient($sourceURL, Configuration::get('migrationpro_token'));
|
||
if (Configuration::get($this->module->name . '_debug_mode')) {
|
||
$this->client->debugOn();
|
||
} else {
|
||
$this->client->debugOff();
|
||
}
|
||
if ($this->client->check()) {
|
||
$content = $this->client->getContent();
|
||
if (isset($content['cms']) && !self::isEmpty($content['cms'])) {
|
||
$this->saveParamsToConfiguration($content);
|
||
$this->initHelperObjects();
|
||
if ($this->requestToCartDetails()) {
|
||
$this->response['step_form'] = $this->module->renderStepTwo();
|
||
}
|
||
} else {
|
||
$context = Context::getContext();
|
||
$module_path = Configuration::get('migrationpro_module_path');
|
||
$context->smarty->assign('sourceURL', $sourceURL);
|
||
$error_msg = $context->smarty->fetch($module_path . 'views/templates/admin/connection_error.tpl');
|
||
$this->errors[] = EDImport::displayError($error_msg);
|
||
}
|
||
} else {
|
||
$error_msg = $this->client->getMessage();
|
||
if (self::isEmpty($error_msg)) {
|
||
$context = Context::getContext();
|
||
$module_path = Configuration::get('migrationpro_module_path');
|
||
$context->smarty->assign('sourceURL', $sourceURL);
|
||
$error_msg = $context->smarty->fetch($module_path . 'views/templates/admin/connection_error.tpl');
|
||
$this->errors[] = EDImport::displayError($error_msg);
|
||
} else {
|
||
$this->errors[] = EDImport::displayError($this->module->l('Please check the URL ') . ' - ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
}
|
||
} elseif ($this->stepNumber == 2) {
|
||
$maps = Tools::getValue('map');
|
||
$languageSumValue = array_sum($maps['languages']);
|
||
$languageDiffResArray = array_diff_assoc($maps['languages'], array_unique($maps['languages']));
|
||
if (!($languageSumValue > 0 && self::isEmpty($languageDiffResArray))) {
|
||
$this->errors[] = $this->module->l('Select a different language for each source language.');
|
||
}
|
||
|
||
$shopSumValue = array_sum($maps['multi_shops']);
|
||
$shopDiffResArray = array_diff_assoc($maps['multi_shops'], array_unique($maps['multi_shops']));
|
||
if (!($shopSumValue > 0 && self::isEmpty($shopDiffResArray))) {
|
||
$this->errors[] = $this->module->l('Select a different shop for each source shop.');
|
||
}
|
||
Configuration::deleteByName('migrationpro_last_migrated_cat_id');
|
||
Configuration::deleteByName('migrationpro_last_migrated_parent_id');
|
||
if (self::isEmpty($this->errors)) {
|
||
$this->initHelperObjects();
|
||
Configuration::updateValue($this->module->name . '_force_manufacturer_ids', Tools::getValue('force_manufacturer_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_category_ids', Tools::getValue('force_category_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_carrier_ids', Tools::getValue('force_carrier_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_product_ids', Tools::getValue('force_product_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_catalogPriceRule_ids', Tools::getValue('force_catalogPriceRule_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_customer_ids', Tools::getValue('force_customer_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_order_ids', Tools::getValue('force_order_ids'));
|
||
Configuration::updateValue($this->module->name . '_force_cms_ids', Tools::getValue('force_cms_ids'));
|
||
Configuration::updateValue($this->module->name . '_ps_validation_errors', Tools::getValue('ps_validation_errors'));
|
||
Configuration::updateValue($this->module->name . '_clear_data', Tools::getValue('clear_data'));
|
||
Configuration::updateValue($this->module->name . '_migrate_recent_data', Tools::getValue('migrate_recent_data'));
|
||
Configuration::updateValue($this->module->name . '_query_row_count', self::convertSpeedNameToNumeric(Tools::getValue('speed')));
|
||
if ($this->createMapping($maps) && $this->createProcess()) {
|
||
$this->saveMappingValues(MigrationProMapping::listMapping(true, true));
|
||
// turn on allow html iframe on
|
||
if (!Configuration::get('PS_ALLOW_HTML_IFRAME')) {
|
||
Configuration::updateValue('PS_ALLOW_HTML_IFRAME', 1);
|
||
Configuration::updateValue($this->module->name . '_allow_html_iframe', 1);
|
||
}
|
||
|
||
$this->response['step_form'] = $this->module->renderStepThree();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Select a minimum of one data type to start migrating.');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
public function saveMappingValues($mapping_values)
|
||
{
|
||
if (Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_save_mapping`')) {
|
||
foreach ($mapping_values as $mappingType => $mappingObject) {
|
||
foreach ($mappingObject as $source_id => $local_id) {
|
||
$mapping = new MigrationProSaveMapping();
|
||
$mapping->type = $mappingType;
|
||
$mapping->source_id = $source_id;
|
||
$mapping->source_name = $mappingType;
|
||
$mapping->local_id = $local_id;
|
||
if (!$mapping->save()) {
|
||
$this->errors[] = $this->module->l('Can\'t save to database mapping information. ');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public function ajaxProcessClearCache()
|
||
{
|
||
if (Tools::getValue('clear_cache')) {
|
||
ini_set('max_execution_time', 0);
|
||
Tools::clearSmartyCache();
|
||
Tools::clearXMLCache();
|
||
Media::clearCache();
|
||
Tools::generateIndex();
|
||
Search::indexation(true);
|
||
|
||
$this->response['has_error'] = false;
|
||
$this->response['has_warning'] = false;
|
||
if (count($this->errors)) {
|
||
$this->response['has_error'] = true;
|
||
$this->response['errors'] = $this->errors;
|
||
}
|
||
if (count($this->warnings)) {
|
||
$this->response['has_warning'] = true;
|
||
$this->response['warnings'] = $this->warnings;
|
||
}
|
||
|
||
die(Tools::jsonEncode($this->response));
|
||
}
|
||
}
|
||
|
||
public function ajaxProcessDebugOn()
|
||
{
|
||
if (Tools::getValue('turn') == 1) {
|
||
Configuration::updateValue($this->module->name . '_debug_mode', 1);
|
||
} else {
|
||
Configuration::updateValue($this->module->name . '_debug_mode', 0);
|
||
}
|
||
}
|
||
|
||
public function ajaxProcessSpeedUp()
|
||
{
|
||
if (!empty(Tools::getValue('speed'))) {
|
||
Configuration::updateValue($this->module->name . '_query_row_count', Tools::getValue('speed'));
|
||
}
|
||
}
|
||
|
||
public function ajaxProcessImportProcess($die = true)
|
||
{
|
||
$this->response = array('has_error' => false, 'has_warning' => false);
|
||
|
||
if (!$this->tabAccess['edit']) {
|
||
$this->errors[] = EDImport::displayError($this->module->l('You do not have permission to use this wizard.'));
|
||
} else {
|
||
$activeProcess = MigrationProProcess::getActiveProcessObject();
|
||
if (Validate::isLoadedObject($activeProcess)) {
|
||
$this->query->setOffset($activeProcess->imported);
|
||
if ($activeProcess->imported == 0) {
|
||
if ($this->truncate && !$this->truncateTables($activeProcess->type)) {
|
||
$this->errors[] = $this->module->l('Can\'t clear current data on Target shop ') . Db::getInstance()->getMsgError();
|
||
}
|
||
|
||
$activeProcess->time_start = date('Y-m-d H:i:s', time());
|
||
$activeProcess->save();
|
||
}
|
||
|
||
if ($activeProcess->type == 'taxes') {
|
||
$this->importTaxes($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'manufacturers') {
|
||
$this->importManufacturers($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'categories') {
|
||
$this->importCategories($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'carriers') {
|
||
$this->importCarriers($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'products') {
|
||
$this->importProducts($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'accessories') {
|
||
$this->importAccessories($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'catalog price rules') {
|
||
$this->importCatalogPriceRules($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'employees') {
|
||
$this->importEmployees($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'customers') {
|
||
$this->importCustomers($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'orders') {
|
||
$this->importOrders($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'message_threads') {
|
||
$this->importMessageThreads($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'cms') {
|
||
$this->importCMS($activeProcess);
|
||
$this->clearSmartyCache();
|
||
} elseif ($activeProcess->type == 'seo') {
|
||
$this->importMeta($activeProcess);
|
||
$this->clearSmartyCache();
|
||
}
|
||
} else {
|
||
die('no process.');
|
||
}
|
||
$this->response['percent'] = MigrationProProcess::calculateImportedDataPercent();
|
||
if ($this->response['percent'] == 100) {
|
||
// turn off allow html iframe feature
|
||
if (Configuration::get($this->module->name . '_allow_html_iframe')) {
|
||
Configuration::updateValue('PS_ALLOW_HTML_IFRAME', 0, null, 0, 0);
|
||
Configuration::updateValue($this->module->name . '_allow_html_iframe', 0, null, 0, 0);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (count($this->errors)) {
|
||
$this->response['has_error'] = true;
|
||
$this->response['errors'] = $this->errors;
|
||
}
|
||
if (count($this->warnings)) {
|
||
$this->response['has_warning'] = true;
|
||
$this->response['warnings'] = $this->warnings;
|
||
}
|
||
|
||
if ($die) {
|
||
die(Tools::jsonEncode($this->response));
|
||
}
|
||
}
|
||
|
||
// --- import functions
|
||
|
||
private function importTaxes($process)
|
||
{
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->taxRulesGroup());
|
||
if ($this->client->query()) {
|
||
$taxRulesGroups = $this->client->getContent();
|
||
$taxRulesGroupIds = self::getCleanIDs($taxRulesGroups['tax_rules_group'], 'id_tax_rules_group');
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->taxRules($taxRulesGroupIds));
|
||
if ($this->client->query()) {
|
||
$taxRules = $this->client->getContent();
|
||
$taxIds = self::getCleanIDs($taxRules, 'id_tax');
|
||
$countryIds = self::getCleanIDs($taxRules, 'id_country');
|
||
$stateIds = self::getCleanIDs($taxRules, 'id_state');
|
||
$this->client->setPostData($this->query->taxLangCountryLangState($taxIds, $countryIds, $stateIds));
|
||
$this->client->serializeOn();
|
||
if ($this->client->query()) {
|
||
$taxLangCountryLangState = $this->client->getContent();
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceIds, $this->module);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->taxes($taxRulesGroups, $taxRules, $taxLangCountryLangState);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importManufacturers($process)
|
||
{
|
||
$this->client->setPostData($this->query->manufactures());
|
||
if ($this->client->query()) {
|
||
$manufacturers = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->manufacturesSqlSecond(self::getCleanIDs($manufacturers, 'id_manufacturer')));
|
||
if ($this->client->query()) {
|
||
$manufacturersAdditionalSecond = $this->client->getContent();
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceManufacturerIds, $this->module);
|
||
$import->setImagePath($this->image_manufacturer);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->manufacturers($manufacturers, $manufacturersAdditionalSecond);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importCategories($process)
|
||
{
|
||
//@TODO find fix for PS 1.4 for category id 2 WHERE is ID 2 standart category from list
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->category());
|
||
if ($this->client->query()) {
|
||
$categories = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->categorySqlSecond(self::getCleanIDs($categories, 'id_category')));
|
||
if ($this->client->query()) {
|
||
$categoriesAdditionalSecond = $this->client->getContent();
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCategoryIds, $this->module, $this->client, $this->query);
|
||
$import->setImagePath($this->image_category);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->categories($categories, $categoriesAdditionalSecond);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importCarriers($process)
|
||
{
|
||
$this->client->setPostData($this->query->carrier());
|
||
if ($this->client->query()) {
|
||
$carriers = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->carrierSqlSecond(self::getCleanIDs($carriers, 'id_carrier')));
|
||
if ($this->client->query()) {
|
||
$carriersAdditionalSecond = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCarrierIds, $this->module, $this->client, $this->query);
|
||
$import->setImagePath($this->image_carrier);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->carriers($carriers, $carriersAdditionalSecond);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
// private function importWarehouse($process,$recent_data)
|
||
// {
|
||
// $this->client->setPostData($this->query->warehouses());
|
||
// if ($this->client->query()) {
|
||
// $warehouses = $this->client->getContent();
|
||
//
|
||
// $this->client->serializeOn();
|
||
// $this->client->setPostData($this->query->warehousesSqlSecond(self::getCleanIDs($warehouses, 'id_warehouse'), self::getCleanIDs($warehouses, 'id_address')));
|
||
// if ($this->client->query()) {
|
||
// $warehousesAdditionalSecond = $this->client->getContent();
|
||
// $this->client->setPostData($this->query->countryState(self::getCleanIDs($warehousesAdditionalSecond['address'], 'id_country'), self::getCleanIDs($warehousesAdditionalSecond['address'], 'id_state')));
|
||
// if ($this->client->query()) {
|
||
// $countryState = $this->client->getContent();
|
||
// $this->client->serializeOff();
|
||
// $import = new EDImport($process, $this->version, $this->url_cart, $this->forceCarrierIds, $this->module, $this->client, $this->query);
|
||
// $import->setPsValidationErrors($this->ps_validation_errors);
|
||
// $import->setRecentData($recent_data);
|
||
// $import->warehouses($warehouses, $warehousesAdditionalSecond, $countryState);
|
||
// $this->errors = $import->getErrorMsg();
|
||
// $this->warnings = $import->getWarningMsg();
|
||
// $this->response = $import->getResponse();
|
||
// } else {
|
||
// $this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
// }
|
||
// }
|
||
// } else {
|
||
// $this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
// }
|
||
// }
|
||
|
||
private function importProducts($process)
|
||
{
|
||
$this->client->setPostData($this->query->product());
|
||
if ($this->client->query()) {
|
||
$products = $this->client->getContent();
|
||
$productIds = self::getCleanIDs($products, 'id_product');
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->productSqlSecond($productIds));
|
||
if ($this->client->query()) {
|
||
$productAdditionalSecond = $this->client->getContent();
|
||
$id_product_attribute = self::getCleanIDs($productAdditionalSecond['product_attribute'], 'id_product_attribute');
|
||
$id_feature = self::getCleanIDs($productAdditionalSecond['feature_product'], 'id_feature');
|
||
$id_feature_value = self::getCleanIDs($productAdditionalSecond['feature_product'], 'id_feature_value');
|
||
$id_supplier = self::getCleanIDs($products, 'id_supplier');
|
||
$id_customization_field = self::getCleanIDs($productAdditionalSecond['customization_field'], 'id_customization_field');
|
||
$id_tag = self::getCleanIDs($productAdditionalSecond['product_tag'], 'id_tag');
|
||
$id_image = self::getCleanIDs($productAdditionalSecond['image'], 'id_image');
|
||
$id_attachment = self::getCleanIDs($productAdditionalSecond['product_attachment'], 'id_attachment');
|
||
$this->client->setPostData($this->query->productSqlThird($id_product_attribute, $id_feature, $id_feature_value, $id_supplier, $id_customization_field, $id_tag, $id_image, $id_attachment));
|
||
if ($this->client->query()) {
|
||
$productAdditionalThird = $this->client->getContent();
|
||
$id_attribute_group = self::getCleanIDs($productAdditionalThird['product_attribute_combination'], 'id_attribute_group');
|
||
$id_attribute = self::getCleanIDs($productAdditionalThird['product_attribute_combination'], 'id_attribute');
|
||
$this->client->setPostData($this->query->productSqlFourth($id_attribute_group, $id_attribute));
|
||
if ($this->client->query()) {
|
||
$productAdditionalFourth = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceProductIds, $this->module, $this->client, $this->query);
|
||
$import->setImagePath($this->image_product);
|
||
$import->setImageSupplierPath($this->image_supplier);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->products($products, $productAdditionalSecond, $productAdditionalThird, $productAdditionalFourth);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importAccessories($process)
|
||
{
|
||
$this->client->setPostData($this->query->accessories());
|
||
if ($this->client->query()) {
|
||
$accessories = $this->client->getContent();
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCatalogPriceRuleIds, $this->module, $this->client, $this->query);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->accessories($accessories);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importCatalogPriceRules($process)
|
||
{
|
||
$this->client->setPostData($this->query->specificPriceRule());
|
||
if ($this->client->query()) {
|
||
$specificPriceRules = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->specificPriceRuleCountry(self::getCleanIDs($specificPriceRules, 'id_country')));
|
||
if ($this->client->query()) {
|
||
$specificPriceRuleCountries = $this->client->getContent();
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->specificPriceRuleConditionGroup(self::getCleanIDs($specificPriceRules, 'id_specific_price_rule')));
|
||
if ($this->client->query()) {
|
||
$specificPriceRuleConditionGroups = $this->client->getContent();
|
||
$this->client->setPostData($this->query->specificPriceRuleCondition(self::getCleanIDs($specificPriceRuleConditionGroups, 'id_specific_price_rule_condition_group')));
|
||
if ($this->client->query()) {
|
||
$specificPriceRuleConditions = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCatalogPriceRuleIds, $this->module, $this->client, $this->query);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->catalogPriceRules($specificPriceRules, $specificPriceRuleCountries, $specificPriceRuleConditionGroups, $specificPriceRuleConditions);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importEmployees($process)
|
||
{
|
||
$this->client->setPostData($this->query->employee());
|
||
if ($this->client->query()) {
|
||
$employees = $this->client->getContent();
|
||
$this->client->setPostData($this->query->employeeShop(self::getCleanIDs($employees, 'id_employee')));
|
||
if ($this->client->query()) {
|
||
$employeesShop = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, false, $this->module, $this->client, $this->query);
|
||
$import->setImagePath($this->image_employee);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->employees($employees, $employeesShop);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importCustomers($process)
|
||
{
|
||
$this->client->setPostData($this->query->customers());
|
||
$this->client->serializeOff();
|
||
if ($this->client->query()) {
|
||
$customers = $this->client->getContent();
|
||
$this->client->setPostData($this->query->address(self::getCleanIDs($customers, 'id_customer')));
|
||
$this->client->serializeOn();
|
||
if ($this->client->query()) {
|
||
$addresses = $this->client->getContent();
|
||
$this->client->setPostData($this->query->countryState(self::getCleanIDs($addresses['address'], 'id_country'), self::getCleanIDs($addresses['address'], 'id_state')));
|
||
if ($this->client->query()) {
|
||
$countryState = $this->client->getContent();
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->cart(self::getCleanIDs($customers, 'id_customer')));
|
||
if ($this->client->query()) {
|
||
$carts = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->cartProductCartRule(self::getCleanIDs($carts, 'id_cart')));
|
||
if ($this->client->query()) {
|
||
$cartProductCartRules = $this->client->getContent();
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->cartRule(self::getCleanIDs($customers, 'id_customer')));
|
||
if ($this->client->query()) {
|
||
$cartRules = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
if (version_compare(Configuration::get('migrationpro_version'), '1.5', '<')) {
|
||
$cartRuleColumnName = 'id_discount';
|
||
} else {
|
||
$cartRuleColumnName = 'id_cart_rule';
|
||
}
|
||
$this->client->setPostData($this->query->cartRuleSqlSecond(self::getCleanIDs($cartRules, $cartRuleColumnName)));
|
||
if ($this->client->query()) {
|
||
$cartRuleAdditionalSecond = $this->client->getContent();
|
||
$this->client->setPostData($this->query->cartRuleCountry(self::getCleanIDs($cartRuleAdditionalSecond['cart_rule_countries'], 'id_country')));
|
||
if ($this->client->query()) {
|
||
$cartRuleCountries = $this->client->getContent();
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->cartRuleProductRule(self::getCleanIDs($cartRuleAdditionalSecond['cart_rule_product_rule_groups'], 'id_product_rule_group')));
|
||
if ($this->client->query()) {
|
||
$cartRuleProductRules = $this->client->getContent();
|
||
$this->client->setPostData($this->query->cartRuleProductRuleValue(self::getCleanIDs($cartRuleProductRules, 'id_product_rule')));
|
||
if ($this->client->query()) {
|
||
$cartRuleProductRuleValues = $this->client->getContent();
|
||
|
||
$importCartRules = Configuration::get('importCartRules');
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCustomerIds, $this->module);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->customers($customers, $addresses, $carts, $cartProductCartRules, $countryState, $cartRules, $cartRuleAdditionalSecond, $cartRuleCountries, $cartRuleProductRules, $cartRuleProductRuleValues, $importCartRules);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importOrders($process)
|
||
{
|
||
$this->client->setPostData($this->query->order());
|
||
if ($this->client->query()) {
|
||
$orders = $this->client->getContent();
|
||
$id_order = self::getCleanIDs($orders, 'id_order');
|
||
$id_address_delivery = self::getCleanIDs($orders, 'id_address_delivery');
|
||
$id_currency = self::getCleanIDs($orders, 'id_currency');
|
||
$order_reference = self::getCleanIDs($orders, 'reference');
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->orderSqlSecond($id_order, $id_address_delivery, $id_currency, $order_reference));
|
||
if ($this->client->query()) {
|
||
$ordersAdditionalSecond = $this->client->getContent();
|
||
$id_order_detail = self::getCleanIDs($ordersAdditionalSecond['order_detail'], 'id_order_detail');
|
||
$id_order_return = self::getCleanIDs($ordersAdditionalSecond['order_return'], 'id_order_return');
|
||
$id_order_invoice = self::getCleanIDs($ordersAdditionalSecond['order_invoice'], 'id_order_invoice');
|
||
$id_country = self::getCleanIDs($ordersAdditionalSecond['address'], 'id_country');
|
||
$id_state = self::getCleanIDs($ordersAdditionalSecond['address'], 'id_state');
|
||
$id_customer_thread = self::getCleanIDs($ordersAdditionalSecond['customer_thread'], 'id_customer_thread');
|
||
$id_order_slip = self::getCleanIDs($ordersAdditionalSecond['order_slip'], 'id_order_slip');
|
||
$id_message = self::getCleanIDs($ordersAdditionalSecond['message'], 'id_message');
|
||
$orderMessageIds = self::getCleanIDs($ordersAdditionalSecond['order_message'], 'id_order_message');
|
||
$this->client->setPostData($this->query->orderSqlThird($id_order_detail, $id_order_return, $id_order_invoice, $id_country, $id_state, $id_customer_thread, $orderMessageIds, $id_order_slip, $id_message));
|
||
if ($this->client->query()) {
|
||
$ordersAdditionalThird = $this->client->getContent();
|
||
$this->client->serializeOff();
|
||
|
||
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceOrderIds, $this->module);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->orders($orders, $ordersAdditionalSecond, $ordersAdditionalThird);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importMessageThreads($process)
|
||
{
|
||
$customerThreads = null;
|
||
$customerMessages = null;
|
||
$this->client->serializeOff();
|
||
$this->client->setPostData($this->query->customerThreads());
|
||
if ($this->client->query()) {
|
||
$customerThreads = $this->client->getContent();
|
||
// if (version_compare($this->version, '1.6', '<')) {
|
||
// $customerThreads = $customerThreads;
|
||
// } else {
|
||
$this->client->setPostData($this->query->customerMessages(self::getCleanIDs($customerThreads, 'id_customer_thread')));
|
||
if ($this->client->query()) {
|
||
$customerMessages = $this->client->getContent();
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCatalogPriceRuleIds, $this->module, $this->client, $this->query);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->customerMessages($customerThreads, $customerMessages);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
return;
|
||
}
|
||
// }
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importCMS($process)
|
||
{
|
||
$this->client->setPostData($this->query->cms());
|
||
if ($this->client->query()) {
|
||
$cmses = $this->client->getContent();
|
||
$this->client->serializeOn();
|
||
$this->client->setPostData($this->query->cmsSqlSecond(self::getCleanIDs($cmses, 'id_cms'), self::getCleanIDs($cmses, 'id_cms_category')));
|
||
if ($this->client->query()) {
|
||
$cmsAdditionalSecond = $this->client->getContent();
|
||
$this->client->setPostData($this->query->cmsSqlThird(self::getCleanIDs($cmsAdditionalSecond['cms_role'], 'id_cms_role'), self::getCleanIDs($cmsAdditionalSecond['cms_category'], 'id_cms_category'), self::getCleanIDs($cmsAdditionalSecond['cms_block'], 'id_cms_block')));
|
||
if ($this->client->query()) {
|
||
$cmsAdditionalThird = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceCMSIds, $this->module, $this->client, $this->query);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->cmses($cmses, $cmsAdditionalSecond, $cmsAdditionalThird);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
private function importMeta($process)
|
||
{
|
||
$this->client->setPostData($this->query->meta());
|
||
if ($this->client->query()) {
|
||
$metas = $this->client->getContent();
|
||
$this->client->setPostData($this->query->metaLang(self::getCleanIDs($metas, 'id_meta')));
|
||
if ($this->client->query()) {
|
||
$metaLang = $this->client->getContent();
|
||
|
||
$import = new EDImport($process, $this->version, $this->url_cart, $this->forceIds, $this->module, $this->client, $this->query);
|
||
$import->setPsValidationErrors($this->ps_validation_errors);
|
||
$import->metas($metas, $metaLang);
|
||
$this->errors = $import->getErrorMsg();
|
||
$this->warnings = $import->getWarningMsg();
|
||
$this->response = $import->getResponse();
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t execute query to source PrestaShop. ' . $this->client->getMessage());
|
||
}
|
||
}
|
||
|
||
// --- Internal helper methods:
|
||
|
||
private function truncateModuleTables()
|
||
{
|
||
$res = Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_data`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_process`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_mapping`');
|
||
|
||
if (!$res) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
private function createMapping($maps)
|
||
{
|
||
$res = true;
|
||
foreach ($maps as $map) {
|
||
foreach ($map as $key => $val) {
|
||
$mapping = new MigrationProMapping($key);
|
||
$mapping->local_id = $val;
|
||
$res &= $mapping->save();
|
||
}
|
||
}
|
||
|
||
return $res;
|
||
}
|
||
|
||
private function createProcess()
|
||
{
|
||
$res = Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_process`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_data`');
|
||
MigrationProDBErrorLogger::removeErrorLogs();
|
||
MigrationProDBWarningLogger::removeWarningLogs();
|
||
$this->client->setPostData($this->query->getCountInfo());
|
||
$this->client->serializeOn();
|
||
if ($this->client->query()) {
|
||
$processes = $this->client->getContent();
|
||
|
||
if (isset($processes['cart_rules'])) {
|
||
unset($processes['cart_rules']);
|
||
Configuration::updateValue('importCartRules', 1);
|
||
} else {
|
||
Configuration::updateValue('importCartRules', 0);
|
||
}
|
||
foreach ($processes as $processKey => $processCount) {
|
||
if (isset($processCount[0]['c']) && !self::isEmpty($processCount[0]['c'])) {
|
||
$process = new MigrationProProcess();
|
||
if ($processKey == 'catalog_price_rules') {
|
||
$process->type = 'catalog price rules';
|
||
} else {
|
||
$process->type = $processKey;
|
||
}
|
||
$process->total = (int)$processCount[0]['c'];
|
||
$process->imported = 0;
|
||
$process->id_source = 0;
|
||
$process->error = 0;
|
||
$process->point = 0;
|
||
$process->time_start = 0;
|
||
$process->finish = 0;
|
||
$res &= $process->add();
|
||
}
|
||
}
|
||
|
||
return $res;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
private function saveParamsToConfiguration($content)
|
||
{
|
||
Configuration::updateValue($this->module->name . '_url', Tools::getValue('source_shop_url'));
|
||
Configuration::updateValue($this->module->name . '_cms', $content['cms']);
|
||
Configuration::updateValue($this->module->name . '_image_category', $content['image_category']);
|
||
Configuration::updateValue($this->module->name . '_image_carrier', $content['image_carrier']);
|
||
Configuration::updateValue($this->module->name . '_image_product', $content['image_product']);
|
||
Configuration::updateValue($this->module->name . '_image_manufacturer', $content['image_manufacturer']);
|
||
Configuration::updateValue($this->module->name . '_image_supplier', $content['image_supplier']);
|
||
Configuration::updateValue($this->module->name . '_image_employee', $content['image_employee']);
|
||
Configuration::updateValue($this->module->name . '_table_prefix', $content['table_prefix']);
|
||
Configuration::updateValue($this->module->name . '_version', $content['version']);
|
||
Configuration::updateValue($this->module->name . '_charset', $content['charset']);
|
||
Configuration::updateValue($this->module->name . '_blowfish_key', $content['blowfish_key']);
|
||
Configuration::updateValue($this->module->name . '_cookie_key', $content['cookie_key']);
|
||
|
||
$this->initParams();
|
||
}
|
||
|
||
private function initParams()
|
||
{
|
||
if (Shop::getContext() == Shop::CONTEXT_ALL || Shop::getContext() == Shop::CONTEXT_GROUP) {
|
||
//fix the osl php version issue
|
||
$allShops = Shop::getCompleteListOfShopsID();
|
||
Shop::setContext(Shop::CONTEXT_SHOP, $allShops[0]);
|
||
}
|
||
|
||
$this->url_cart = Configuration::get($this->module->name . '_url');
|
||
$this->token_cart = Configuration::get($this->module->name . '_token');
|
||
$this->cms = Configuration::get($this->module->name . '_cms');
|
||
$this->image_category = Configuration::get($this->module->name . '_image_category');
|
||
$this->image_carrier = Configuration::get($this->module->name . '_image_carrier');
|
||
$this->image_product = Configuration::get($this->module->name . '_image_product');
|
||
$this->image_manufacturer = Configuration::get($this->module->name . '_image_manufacturer');
|
||
$this->image_supplier = Configuration::get($this->module->name . '_image_supplier');
|
||
$this->image_employee = Configuration::get($this->module->name . '_image_employee');
|
||
$this->table_prefix = Configuration::get($this->module->name . '_table_prefix');
|
||
$this->version = Configuration::get($this->module->name . '_version');
|
||
$this->charset = Configuration::get($this->module->name . '_charset');
|
||
$this->blowfish_key = Configuration::get($this->module->name . '_blowfish_key');
|
||
$this->cookie_key = Configuration::get($this->module->name . '_cookie_key');
|
||
$this->forceManufacturerIds = Configuration::get($this->module->name . '_force_manufacturer_ids');
|
||
$this->forceCategoryIds = Configuration::get($this->module->name . '_force_category_ids');
|
||
$this->forceCarrierIds = Configuration::get($this->module->name . '_force_carrier_ids');
|
||
$this->forceProductIds = Configuration::get($this->module->name . '_force_product_ids');
|
||
$this->forceCatalogPriceRuleIds = Configuration::get($this->module->name . '_force_catalogPriceRule_ids');
|
||
$this->forceCustomerIds = Configuration::get($this->module->name . '_force_customer_ids');
|
||
$this->forceOrderIds = Configuration::get($this->module->name . '_force_order_ids');
|
||
$this->forceCMSIds = Configuration::get($this->module->name . '_force_cms_ids');
|
||
$this->ps_validation_errors = Configuration::get($this->module->name . '_ps_validation_errors');
|
||
$this->truncate = Configuration::get($this->module->name . '_clear_data');
|
||
$this->speed = Configuration::get($this->module->name . '_query_row_count');
|
||
$this->recent_data = Configuration::get($this->module->name . '_migrate_recent_data');
|
||
}
|
||
|
||
private function requestToCartDetails()
|
||
{
|
||
// --- get default values from source cart
|
||
|
||
$this->client->setPostData($this->query->getDefaultShopValues());
|
||
$this->client->serializeOn();
|
||
$this->client->query();
|
||
$resultDefaultShopValues = $this->client->getContent();
|
||
$this->query->setVersion($this->version);
|
||
$this->client->setPostData($this->query->getMappingInfo($resultDefaultShopValues['default_lang'][0]['value']));
|
||
$this->client->query();
|
||
$mappingInformation = $this->client->getContent();
|
||
$mapping_value = MigrationProSaveMapping::listMapping(true, true);
|
||
$source_default_lang_id = $resultDefaultShopValues['default_lang'][0]['value'];
|
||
$target_default_lang_id = Configuration::get('PS_LANG_DEFAULT');
|
||
Configuration::updateValue('migrationpro_source_root_cat', $resultDefaultShopValues['root_home'][0]['root']);
|
||
Configuration::updateValue('migrationpro_source_home_cat', $resultDefaultShopValues['root_home'][0]['home']);
|
||
Configuration::updateValue('migrationpro_source_max_cat', $resultDefaultShopValues['get_max_cat'][0]['max_cat_id']);
|
||
|
||
if (is_array($mappingInformation)) {
|
||
if (Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'migrationpro_mapping`')) {
|
||
foreach ($mappingInformation as $mappingType => $mappingObject) {
|
||
foreach ($mappingObject as $value) {
|
||
$mapping = new MigrationProMapping();
|
||
$mapping->type = $mappingType;
|
||
$mapping->source_id = $value['source_id'];
|
||
$mapping->source_name = $value['source_name'];
|
||
if ($mappingType == 'languages' && $value['source_id'] == $source_default_lang_id) {
|
||
$mapping->local_id = $target_default_lang_id;
|
||
} else {
|
||
if (!empty($mapping_value)) {
|
||
$mapping->local_id = $mapping_value[$mappingType][$value['source_id']];
|
||
}
|
||
}
|
||
if (!$mapping->save()) {
|
||
$this->errors[] = $this->module->l('Can\'t save to database mapping information. ');
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
$this->errors[] = $this->module->l('Can\'t truncate mapping table');
|
||
}
|
||
}
|
||
if (self::isEmpty($this->errors)) {
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
protected function checkMappingIsEmpty($mapping)
|
||
{
|
||
if (self::isEmpty($mapping)) {
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
protected function truncateTables($case)
|
||
{
|
||
$res = true;
|
||
switch ($case) {
|
||
case 'taxes':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'tax`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'tax_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'tax_rule`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'tax_rules_group`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'tax_rules_group_shop`');
|
||
break;
|
||
case 'manufacturers':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'manufacturer`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'manufacturer_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'manufacturer_shop`');
|
||
foreach (scandir(_PS_MANU_IMG_DIR_) as $d) {
|
||
if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $d)) {
|
||
unlink(_PS_MANU_IMG_DIR_ . $d);
|
||
}
|
||
}
|
||
break;
|
||
case 'categories':
|
||
$res &= Db::getInstance()->execute('
|
||
DELETE FROM `' . _DB_PREFIX_ . 'category`
|
||
WHERE id_category NOT IN (' . (int)Configuration::get('PS_HOME_CATEGORY') . ', ' . (int)Configuration::get('PS_ROOT_CATEGORY') . ')');
|
||
$res &= Db::getInstance()->execute('
|
||
DELETE FROM `' . _DB_PREFIX_ . 'category_lang`
|
||
WHERE id_category NOT IN (' . (int)Configuration::get('PS_HOME_CATEGORY') . ', ' . (int)Configuration::get('PS_ROOT_CATEGORY') . ')');
|
||
$res &= Db::getInstance()->execute('
|
||
DELETE FROM `' . _DB_PREFIX_ . 'category_shop`
|
||
WHERE `id_category` NOT IN (' . (int)Configuration::get('PS_HOME_CATEGORY') . ', ' . (int)Configuration::get('PS_ROOT_CATEGORY') . ')');
|
||
$res &= Db::getInstance()->execute('
|
||
DELETE FROM `' . _DB_PREFIX_ . 'category_group`
|
||
WHERE `id_category` NOT IN (' . (int)Configuration::get('PS_HOME_CATEGORY') . ', ' . (int)Configuration::get('PS_ROOT_CATEGORY') . ')');
|
||
$res &= Db::getInstance()->execute('ALTER TABLE `' . _DB_PREFIX_ . 'category` AUTO_INCREMENT = 3');
|
||
foreach (scandir(_PS_CAT_IMG_DIR_) as $d) {
|
||
if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $d)) {
|
||
unlink(_PS_CAT_IMG_DIR_ . $d);
|
||
}
|
||
}
|
||
break;
|
||
case 'carriers':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier_group`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier_tax_rules_group_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'carrier_zone`');
|
||
if (version_compare(_PS_VERSION_, '1.7.0.0', '>=')) {
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'module_carrier`');
|
||
}
|
||
foreach (scandir(_PS_SHIP_IMG_DIR_) as $d) {
|
||
if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $d)) {
|
||
unlink(_PS_SHIP_IMG_DIR_ . $d);
|
||
}
|
||
}
|
||
break;
|
||
case 'warehouse':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'warehouse`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'warehouse_carrier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'warehouse_product_location`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'warehouse_shop`');
|
||
break;
|
||
case 'products':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'feature_product`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'category_product`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_tag`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'image`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'image_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'image_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'specific_price`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'specific_price_priority`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_carrier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_product`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'pack`');
|
||
if (count(Db::getInstance()->executeS('SHOW TABLES LIKE \'' . _DB_PREFIX_ . 'favorite_product\' '))) { //check if table exist
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'favorite_product`');
|
||
}
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attachment`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'accessory`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_country_tax`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_download`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_group_reduction_cache`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_sale`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_supplier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'warehouse_product_location`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'stock`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'stock_available`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'stock_mvt`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customization`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customization_field`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customization_field_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'supply_order_detail`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_impact`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_combination`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_image`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'pack`');
|
||
Image::deleteAllImages(_PS_PROD_IMG_DIR_);
|
||
if (!file_exists(_PS_PROD_IMG_DIR_)) {
|
||
mkdir(_PS_PROD_IMG_DIR_);
|
||
}
|
||
// break;
|
||
// case 'combinations':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_impact`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_group_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_group_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'attribute_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_shop`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_combination`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'product_attribute_image`');
|
||
if (version_compare(_PS_VERSION_, '1.7.0.0', '<')) {
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE`' . _DB_PREFIX_ . 'attribute`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE`' . _DB_PREFIX_ . 'attribute_group`');
|
||
} else {
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'attribute`');
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'attribute_group`');
|
||
}
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'stock_available` WHERE id_product_attribute != 0');
|
||
// case 'suppliers':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'supplier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'supplier_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'supplier_shop`');
|
||
foreach (scandir(_PS_SUPP_IMG_DIR_) as $d) {
|
||
if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $d)) {
|
||
unlink(_PS_SUPP_IMG_DIR_ . $d);
|
||
}
|
||
}
|
||
// break;
|
||
break;
|
||
case 'catalog price rules':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'specific_price_rule`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'specific_price_rule_condition_group`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'specific_price_rule_condition`');
|
||
break;
|
||
case 'customers':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customer`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customer_group`');
|
||
// break;
|
||
// case 'addresses':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'address`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_product`');
|
||
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_carrier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_combination`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_country`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_group`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_product_rule_group`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_product_rule`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_product_rule_value`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cart_rule_shop`');
|
||
break;
|
||
case 'orders':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'orders`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_detail`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_detail_tax`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_history`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_invoice`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_cart_rule`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_payment`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_invoice_payment`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_invoice_tax`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_carrier`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_message`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_message_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_slip`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_slip_detail`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_slip_detail_tax`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_return`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'order_return_detail`');
|
||
break;
|
||
case 'cms':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_shop`');
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'cms_category` WHERE id_cms_category != 1');
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'cms_category_lang` WHERE id_cms_category != 1');
|
||
$res &= Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'cms_category_shop` WHERE id_cms_category != 1');
|
||
if (version_compare(_PS_VERSION_, '1.7.0.0', '<')) {
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_block`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_block_lang`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_block_page`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_block_shop`');
|
||
}
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_role`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'cms_role_lang`');
|
||
break;
|
||
case 'seo':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'meta`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'meta_lang`');
|
||
break;
|
||
case 'message_threads':
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customer_message`');
|
||
$res &= Db::getInstance()->execute('TRUNCATE TABLE `' . _DB_PREFIX_ . 'customer_thread`');
|
||
break;
|
||
}
|
||
Image::clearTmpDir();
|
||
|
||
return $res;
|
||
}
|
||
|
||
// --- Static utility methods:
|
||
|
||
public static function getCleanIDs($rows, $key)
|
||
{
|
||
$result = array();
|
||
if (is_array($rows) && !self::isEmpty($rows)) {
|
||
foreach ($rows as $row) {
|
||
if (is_numeric($row[$key])) {
|
||
$result[] = $row[$key];
|
||
} else {
|
||
$result[] = '\'' . $row[$key] . '\'';
|
||
}
|
||
}
|
||
$result = array_unique($result);
|
||
$result = implode(',', $result);
|
||
|
||
return $result;
|
||
} else {
|
||
return 'null';
|
||
}
|
||
}
|
||
|
||
public static function convertSpeedNameToNumeric($speed)
|
||
{
|
||
switch ((string)$speed) {
|
||
case 'VerySlow':
|
||
$row_count = 2;
|
||
break;
|
||
case 'Slow':
|
||
$row_count = 5;
|
||
break;
|
||
case 'Normal':
|
||
$row_count = 10;
|
||
break;
|
||
case 'Fast':
|
||
$row_count = 25;
|
||
break;
|
||
case 'VeryFast':
|
||
$row_count = 85;
|
||
break;
|
||
case 'MigrationProSpeed':
|
||
$row_count = 100;
|
||
break;
|
||
default:
|
||
$row_count = 10;
|
||
break;
|
||
}
|
||
|
||
return $row_count;
|
||
}
|
||
|
||
public static function isEmpty($field)
|
||
{
|
||
if (version_compare(PHP_VERSION, '5.5.0', '<')) {
|
||
return ($field === '' || $field === null || $field === array() || $field === 0 || $field === '0');
|
||
} else {
|
||
return empty($field);
|
||
}
|
||
}
|
||
}
|