diff --git a/index.php b/index.php index e5064df..2a40ec7 100644 --- a/index.php +++ b/index.php @@ -23,13 +23,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/pscleaner.php b/pscleaner.php index 63d5e66..3bd046d 100644 --- a/pscleaner.php +++ b/pscleaner.php @@ -25,92 +25,87 @@ * International Registered Trademark & Property of PrestaShop SA */ -if (!defined('_CAN_LOAD_FILES_')) - exit; +if (!defined('_CAN_LOAD_FILES_')) { + exit; +} class PSCleaner extends Module { - public function __construct() - { - $this->name = 'pscleaner'; - $this->tab = 'administration'; - $this->version = '1.8.5'; - $this->author = 'PrestaShop'; - $this->need_instance = 0; - if (version_compare(_PS_VERSION_, '1.5.0.0 ', '>=')) - $this->multishop_context = Shop::CONTEXT_ALL; - - $this->bootstrap = true; - parent::__construct(); - - $this->displayName = $this->l('PrestaShop Cleaner'); - $this->description = $this->l('Check and fix functional integrity constraints and remove default data'); - $this->secure_key = Tools::encrypt($this->name); - } - - protected function getMultiShopValues($key) - { - if (version_compare(_PS_VERSION_, '1.6.0.3', '>=') === true) - return Configuration::getMultiShopValues($key); - else - { - $shops = Shop::getShops(false, null, true); - $id_lang = (int) $this->context->language->id; - $results = array(); - array_push($results, Configuration::get($key)); - - foreach ($shops as $id_shop) - array_push($results, Configuration::get($key, $id_lang, null, $id_shop)); - - return $results; - } - } - - public function getContent() - { - $html = '

'.$this->l('Be really careful with this tool - There is no possible rollback!').'

'; - if (Tools::isSubmit('submitCheckAndFix')) - { - $logs = self::checkAndFix(); - if (count($logs)) - { - $conf = $this->l('The following queries successfuly fixed broken data:').'
'; - } - else - $conf = $this->l('Nothing that need to be fixed'); - $html .= $this->displayConfirmation($conf); - } - elseif (Tools::isSubmit('submitCleanAndOptimize')) - { - $logs = self::cleanAndOptimize(); - if (count($logs)) - { - $conf = $this->l('The following queries successfuly cleaned your database:').'
'; - } - else - $conf = $this->l('Nothing that need to be cleaned'); - $html .= $this->displayConfirmation($conf); - } - elseif (Tools::getValue('submitTruncateCatalog') && Tools::getValue('checkTruncateCatalog')) - { - self::truncate('catalog'); - $html .= $this->displayConfirmation($this->l('Catalog truncated')); - } - elseif (Tools::getValue('submitTruncateSales') && Tools::getValue('checkTruncateSales')) - { - self::truncate('sales'); - $html .= $this->displayConfirmation($this->l('Orders and customers truncated')); - } - - // d($_POST); - - $html .= ' + public function __construct() + { + $this->name = 'pscleaner'; + $this->tab = 'administration'; + $this->version = '1.8.5'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; + if (version_compare(_PS_VERSION_, '1.5.0.0 ', '>=')) { + $this->multishop_context = Shop::CONTEXT_ALL; + } + + $this->bootstrap = true; + parent::__construct(); + + $this->displayName = $this->l('PrestaShop Cleaner'); + $this->description = $this->l('Check and fix functional integrity constraints and remove default data'); + $this->secure_key = Tools::encrypt($this->name); + } + + protected function getMultiShopValues($key) + { + if (version_compare(_PS_VERSION_, '1.6.0.3', '>=') === true) { + return Configuration::getMultiShopValues($key); + } else { + $shops = Shop::getShops(false, null, true); + $id_lang = (int) $this->context->language->id; + $results = array(); + array_push($results, Configuration::get($key)); + + foreach ($shops as $id_shop) { + array_push($results, Configuration::get($key, $id_lang, null, $id_shop)); + } + + return $results; + } + } + + public function getContent() + { + $html = '

'.$this->l('Be really careful with this tool - There is no possible rollback!').'

'; + if (Tools::isSubmit('submitCheckAndFix')) { + $logs = self::checkAndFix(); + if (count($logs)) { + $conf = $this->l('The following queries successfuly fixed broken data:').'
'; + } else { + $conf = $this->l('Nothing that need to be fixed'); + } + $html .= $this->displayConfirmation($conf); + } elseif (Tools::isSubmit('submitCleanAndOptimize')) { + $logs = self::cleanAndOptimize(); + if (count($logs)) { + $conf = $this->l('The following queries successfuly cleaned your database:').'
'; + } else { + $conf = $this->l('Nothing that need to be cleaned'); + } + $html .= $this->displayConfirmation($conf); + } elseif (Tools::getValue('submitTruncateCatalog') && Tools::getValue('checkTruncateCatalog')) { + self::truncate('catalog'); + $html .= $this->displayConfirmation($this->l('Catalog truncated')); + } elseif (Tools::getValue('submitTruncateSales') && Tools::getValue('checkTruncateSales')) { + self::truncate('sales'); + $html .= $this->displayConfirmation($this->l('Orders and customers truncated')); + } + + // d($_POST); + + $html .= ' '; - - return $html.$this->renderForm(); - } - - public static function checkAndFix() - { - $db = Db::getInstance(); - $logs = array(); - - // Remove doubles in the configuration - $filtered_configuration = array(); - $result = $db->ExecuteS('SELECT * FROM '._DB_PREFIX_.'configuration'); - foreach ($result as $row) - { - $key = $row['id_shop_group'].'-|-'.$row['id_shop'].'-|-'.$row['name']; - if (in_array($key, $filtered_configuration)) - { - $query = 'DELETE FROM '._DB_PREFIX_.'configuration WHERE id_configuration = '.(int)$row['id_configuration']; - $db->Execute($query); - $logs[$query] = 1; - } - else - $filtered_configuration[] = $key; - } - unset($filtered_configuration); - - // Remove inexisting or monolanguage configuration value from configuration_lang - $query = 'DELETE FROM `'._DB_PREFIX_.'configuration_lang` + + return $html.$this->renderForm(); + } + + public static function checkAndFix() + { + $db = Db::getInstance(); + $logs = array(); + + // Remove doubles in the configuration + $filtered_configuration = array(); + $result = $db->ExecuteS('SELECT * FROM '._DB_PREFIX_.'configuration'); + foreach ($result as $row) { + $key = $row['id_shop_group'].'-|-'.$row['id_shop'].'-|-'.$row['name']; + if (in_array($key, $filtered_configuration)) { + $query = 'DELETE FROM '._DB_PREFIX_.'configuration WHERE id_configuration = '.(int)$row['id_configuration']; + $db->Execute($query); + $logs[$query] = 1; + } else { + $filtered_configuration[] = $key; + } + } + unset($filtered_configuration); + + // Remove inexisting or monolanguage configuration value from configuration_lang + $query = 'DELETE FROM `'._DB_PREFIX_.'configuration_lang` WHERE `id_configuration` NOT IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration`) OR `id_configuration` IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE name IS NULL OR name = "")'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - - // Simple Cascade Delete - $queries = self::getCheckAndFixQueries(); - - $queries = self::bulle($queries); - foreach ($queries as $query_array) - { - // If this is a module and the module is not installed, we continue - if (isset($query_array[4]) && !Module::isInstalled($query_array[4])) - continue; - - $query = 'DELETE FROM `'._DB_PREFIX_.$query_array[0].'` WHERE `'.$query_array[1].'` NOT IN (SELECT `'.$query_array[3].'` FROM `'._DB_PREFIX_.$query_array[2].'`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - } - - // _lang table cleaning - $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_lang"'); - foreach ($tables as $table) - { - $table_lang = current($table); - $table = str_replace('_lang', '', $table_lang); - $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); - - $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - - $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `'._DB_PREFIX_.'lang`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - } - - // _shop table cleaning - $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_shop"'); - foreach ($tables as $table) - { - $table_shop = current($table); - $table = str_replace('_shop', '', $table_shop); - $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); - - if (in_array($table_shop, array(_DB_PREFIX_.'carrier_tax_rules_group_shop'))) - continue; - - $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - - $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - } - - // stock_available - $query = 'DELETE FROM `'._DB_PREFIX_.'stock_available` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`) AND `id_shop_group` NOT IN (SELECT `id_shop_group` FROM `'._DB_PREFIX_.'shop_group`)'; - if ($db->Execute($query)) - if ($affected_rows = $db->Affected_Rows()) - $logs[$query] = $affected_rows; - - Category::regenerateEntireNtree(); - - // @Todo: Remove attachment files, images... - Image::clearTmpDir(); - self::clearAllCaches(); - - return $logs; - } - - public function truncate($case) - { - $db = Db::getInstance(); + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + // Simple Cascade Delete + $queries = self::getCheckAndFixQueries(); + + $queries = self::bulle($queries); + foreach ($queries as $query_array) { + // If this is a module and the module is not installed, we continue + if (isset($query_array[4]) && !Module::isInstalled($query_array[4])) { + continue; + } + + $query = 'DELETE FROM `'._DB_PREFIX_.$query_array[0].'` WHERE `'.$query_array[1].'` NOT IN (SELECT `'.$query_array[3].'` FROM `'._DB_PREFIX_.$query_array[2].'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // _lang table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_lang"'); + foreach ($tables as $table) { + $table_lang = current($table); + $table = str_replace('_lang', '', $table_lang); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `'._DB_PREFIX_.'lang`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // _shop table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_shop"'); + foreach ($tables as $table) { + $table_shop = current($table); + $table = str_replace('_shop', '', $table_shop); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + if (in_array($table_shop, array(_DB_PREFIX_.'carrier_tax_rules_group_shop'))) { + continue; + } + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + + // stock_available + $query = 'DELETE FROM `'._DB_PREFIX_.'stock_available` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`) AND `id_shop_group` NOT IN (SELECT `id_shop_group` FROM `'._DB_PREFIX_.'shop_group`)'; + if ($db->Execute($query)) { + if ($affected_rows = $db->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + Category::regenerateEntireNtree(); + + // @Todo: Remove attachment files, images... + Image::clearTmpDir(); + self::clearAllCaches(); + + return $logs; + } + + public function truncate($case) + { + $db = Db::getInstance(); $db->execute('SET FOREIGN_KEY_CHECKS = 0;'); - switch ($case) - { - case 'catalog': - $id_home = $this->getMultiShopValues('PS_HOME_CATEGORY'); - $id_root = $this->getMultiShopValues('PS_ROOT_CATEGORY'); - $db->execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); - $db->execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); - $db->execute('DELETE FROM `'._DB_PREFIX_.'category_shop` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); - foreach (scandir(_PS_CAT_IMG_DIR_) as $dir) - if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) - unlink(_PS_CAT_IMG_DIR_.$dir); - $tables = self::getCatalogRelatedTables(); - foreach ($tables as $table) - $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); - $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_manufacturer > 0 OR id_supplier > 0 OR id_warehouse > 0'); - - Image::deleteAllImages(_PS_PROD_IMG_DIR_); - if (!file_exists(_PS_PROD_IMG_DIR_)) - mkdir(_PS_PROD_IMG_DIR_); - foreach (scandir(_PS_MANU_IMG_DIR_) as $dir) - if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) - unlink(_PS_MANU_IMG_DIR_.$dir); - foreach (scandir(_PS_SUPP_IMG_DIR_) as $dir) - if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) - unlink(_PS_SUPP_IMG_DIR_.$dir); - break; - - case 'sales': - $tables = self::getSalesRelatedTables(); - - $modules_tables = array( - 'sekeywords' => array('sekeyword'), - 'pagesnotfound' => array('pagenotfound'), - 'paypal' => array('paypal_customer', 'paypal_order') - ); - - foreach ($modules_tables as $name => $module_tables) - if (Module::isInstalled($name)) - $tables = array_merge($tables, $module_tables); - - foreach ($tables as $table) - $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); - $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_customer > 0'); - $db->execute('UPDATE `'._DB_PREFIX_.'employee` SET `id_last_order` = 0,`id_last_customer_message` = 0,`id_last_customer` = 0'); - - break; - } - self::clearAllCaches(); + switch ($case) { + case 'catalog': + $id_home = $this->getMultiShopValues('PS_HOME_CATEGORY'); + $id_root = $this->getMultiShopValues('PS_ROOT_CATEGORY'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_shop` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + foreach (scandir(_PS_CAT_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_CAT_IMG_DIR_.$dir); + } + } + $tables = self::getCatalogRelatedTables(); + foreach ($tables as $table) { + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + } + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_manufacturer > 0 OR id_supplier > 0 OR id_warehouse > 0'); + + Image::deleteAllImages(_PS_PROD_IMG_DIR_); + if (!file_exists(_PS_PROD_IMG_DIR_)) { + mkdir(_PS_PROD_IMG_DIR_); + } + foreach (scandir(_PS_MANU_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_MANU_IMG_DIR_.$dir); + } + } + foreach (scandir(_PS_SUPP_IMG_DIR_) as $dir) { + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) { + unlink(_PS_SUPP_IMG_DIR_.$dir); + } + } + break; + + case 'sales': + $tables = self::getSalesRelatedTables(); + + $modules_tables = array( + 'sekeywords' => array('sekeyword'), + 'pagesnotfound' => array('pagenotfound'), + 'paypal' => array('paypal_customer', 'paypal_order') + ); + + foreach ($modules_tables as $name => $module_tables) { + if (Module::isInstalled($name)) { + $tables = array_merge($tables, $module_tables); + } + } + + foreach ($tables as $table) { + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + } + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_customer > 0'); + $db->execute('UPDATE `'._DB_PREFIX_.'employee` SET `id_last_order` = 0,`id_last_customer_message` = 0,`id_last_customer` = 0'); + + break; + } + self::clearAllCaches(); $db->execute('SET FOREIGN_KEY_CHECKS = 1;'); } - public static function cleanAndOptimize() - { - $logs = array(); + public static function cleanAndOptimize() + { + $logs = array(); - $query = ' + $query = ' DELETE FROM `'._DB_PREFIX_.'cart` WHERE id_cart NOT IN (SELECT id_cart FROM `'._DB_PREFIX_.'orders`) AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; - if (Db::getInstance()->Execute($query)) - if ($affected_rows = Db::getInstance()->Affected_Rows()) - $logs[$query] = $affected_rows; - - $query = ' + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $query = ' DELETE FROM `'._DB_PREFIX_.'cart_rule` WHERE ( active = 0 @@ -317,188 +335,187 @@ public static function cleanAndOptimize() OR date_to < "'.pSQL(date('Y-m-d')).'" ) AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; - if (Db::getInstance()->Execute($query)) - if ($affected_rows = Db::getInstance()->Affected_Rows()) - $logs[$query] = $affected_rows; - - $parents = Db::getInstance()->ExecuteS('SELECT DISTINCT id_parent FROM '._DB_PREFIX_.'tab'); - foreach ($parents as $parent) - { - $children = Db::getInstance()->ExecuteS('SELECT id_tab FROM '._DB_PREFIX_.'tab WHERE id_parent = '.(int)$parent['id_parent'].' ORDER BY IF(class_name IN ("AdminHome", "AdminDashboard"), 1, 2), position ASC'); - $i = 1; - foreach ($children as $child) - { - $query = 'UPDATE '._DB_PREFIX_.'tab SET position = '.(int)($i++).' WHERE id_tab = '.(int)$child['id_tab'].' AND id_parent = '.(int)$parent['id_parent']; - if (Db::getInstance()->Execute($query)) - if ($affected_rows = Db::getInstance()->Affected_Rows()) - $logs[$query] = $affected_rows; - } - } - - return $logs; - } - - protected static function bulle($array) - { - $sorted = false; - $size = count($array); - while (!$sorted) - { - $sorted = true; - for ($i = 0; $i < $size - 1; ++$i) - for ($j = $i + 1; $j < $size; ++$j) - if ($array[$i][2] == $array[$j][0]) - { - $tmp = $array[$i]; - $array[$i] = $array[$j]; - $array[$j] = $tmp; - $sorted = false; - } - } - return $array; - } - - protected static function clearAllCaches() - { - $index = file_exists(_PS_TMP_IMG_DIR_.'index.php') ? file_get_contents(_PS_TMP_IMG_DIR_.'index.php') : ''; - Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false); - file_put_contents(_PS_TMP_IMG_DIR_.'index.php', $index); - Context::getContext()->smarty->clearAllCache(); - } - - public function renderForm() - { - $fields_form_1 = array( - 'form' => array( - 'legend' => array( - 'title' => $this->l('Catalog'), - 'icon' => 'icon-cogs' - ), - 'input' => array( - array( - 'type' => 'switch', - 'is_bool' => true, - 'label' => $this->l('I understand that all the catalog data will be removed without possible rollback: products, features, categories, tags, images, prices, attachments, scenes, stocks, attribute groups and values, manufacturers, suppliers...'), - 'name' => 'checkTruncateCatalog', - 'values' => array( - array( - 'id' => 'checkTruncateCatalog_on', - 'value' => 1, - 'label' => $this->l('Enabled') - ), - array( - 'id' => 'checkTruncateCatalog_off', - 'value' => 0, - 'label' => $this->l('Disabled') - ) - ) - ) - ), - 'submit' => array( - 'title' => $this->l('Delete catalog'), - 'class' => 'btn btn-default pull-right', - 'name' => 'submitTruncateCatalog', - 'id' => 'submitTruncateCatalog', - ) - ) - ); - - $fields_form_2 = array( - 'form' => array( - 'legend' => array( - 'title' => $this->l('Orders and customers'), - 'icon' => 'icon-cogs' - ), - 'input' => array( - array( - 'type' => 'switch', - 'is_bool' => true, - 'label' => $this->l('I understand that all the orders and customers will be removed without possible rollback: customers, carts, orders, connections, guests, messages, stats...'), - 'name' => 'checkTruncateSales', - 'values' => array( - array( - 'id' => 'checkTruncateSales_on', - 'value' => 1, - 'label' => $this->l('Enabled') - ), - array( - 'id' => 'checkTruncateSales_off', - 'value' => 0, - 'label' => $this->l('Disabled') - ) - ) - ) - ), - 'submit' => array( - 'title' => $this->l('Delete orders & customers'), - 'class' => 'btn btn-default pull-right', - 'name' => 'submitTruncateSales', - 'id' => 'submitTruncateSales', - ) - ) - ); - - $fields_form_3 = array( - 'form' => array( - 'legend' => array( - 'title' => $this->l('Functional integrity constraints'), - 'icon' => 'icon-cogs' - ), - 'submit' => array( - 'title' => $this->l('Check & fix'), - 'class' => 'btn btn-default pull-right', - 'name' => 'submitCheckAndFix', - ) - ) - ); - $fields_form_4 = array( - 'form' => array( - 'legend' => array( - 'title' => $this->l('Database cleaning'), - 'icon' => 'icon-cogs' - ), - 'submit' => array( - 'title' => $this->l('Clean & Optimize'), - 'class' => 'btn btn-default pull-right', - 'name' => 'submitCleanAndOptimize', - ) - ) - ); - - $helper = new HelperForm(); - $helper->module = $this; - $helper->show_toolbar = false; - $helper->table = $this->table; - $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); - $helper->default_form_language = $lang->id; - $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; - $this->fields_form = array(); - $helper->id = (int)Tools::getValue('id_carrier'); - $helper->identifier = $this->identifier; - $helper->submit_action = 'btnSubmit'; - $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; - $helper->token = Tools::getAdminTokenLite('AdminModules'); - $helper->tpl_vars = array( - 'fields_value' => $this->getConfigFieldsValues(), - 'languages' => $this->context->controller->getLanguages(), - 'id_language' => $this->context->language->id - ); - - return $helper->generateForm(array($fields_form_1, $fields_form_2, $fields_form_3, $fields_form_4)); - } - - public function getConfigFieldsValues() - { - return array('checkTruncateSales' => 0, 'checkTruncateCatalog' => 0); - } - - public static function getCheckAndFixQueries() + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + + $parents = Db::getInstance()->ExecuteS('SELECT DISTINCT id_parent FROM '._DB_PREFIX_.'tab'); + foreach ($parents as $parent) { + $children = Db::getInstance()->ExecuteS('SELECT id_tab FROM '._DB_PREFIX_.'tab WHERE id_parent = '.(int)$parent['id_parent'].' ORDER BY IF(class_name IN ("AdminHome", "AdminDashboard"), 1, 2), position ASC'); + $i = 1; + foreach ($children as $child) { + $query = 'UPDATE '._DB_PREFIX_.'tab SET position = '.(int)($i++).' WHERE id_tab = '.(int)$child['id_tab'].' AND id_parent = '.(int)$parent['id_parent']; + if (Db::getInstance()->Execute($query)) { + if ($affected_rows = Db::getInstance()->Affected_Rows()) { + $logs[$query] = $affected_rows; + } + } + } + } + + return $logs; + } + + protected static function bulle($array) { - if (version_compare('1.7.0.0', _PS_VERSION_, '>=')) { - $append = array( + $sorted = false; + $size = count($array); + while (!$sorted) { + $sorted = true; + for ($i = 0; $i < $size - 1; ++$i) { + for ($j = $i + 1; $j < $size; ++$j) { + if ($array[$i][2] == $array[$j][0]) { + $tmp = $array[$i]; + $array[$i] = $array[$j]; + $array[$j] = $tmp; + $sorted = false; + } + } + } + } + return $array; + } - ); - } else { + protected static function clearAllCaches() + { + $index = file_exists(_PS_TMP_IMG_DIR_.'index.php') ? file_get_contents(_PS_TMP_IMG_DIR_.'index.php') : ''; + Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false); + file_put_contents(_PS_TMP_IMG_DIR_.'index.php', $index); + Context::getContext()->smarty->clearAllCache(); + } + + public function renderForm() + { + $fields_form_1 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Catalog'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the catalog data will be removed without possible rollback: products, features, categories, tags, images, prices, attachments, scenes, stocks, attribute groups and values, manufacturers, suppliers...'), + 'name' => 'checkTruncateCatalog', + 'values' => array( + array( + 'id' => 'checkTruncateCatalog_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateCatalog_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete catalog'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateCatalog', + 'id' => 'submitTruncateCatalog', + ) + ) + ); + + $fields_form_2 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Orders and customers'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the orders and customers will be removed without possible rollback: customers, carts, orders, connections, guests, messages, stats...'), + 'name' => 'checkTruncateSales', + 'values' => array( + array( + 'id' => 'checkTruncateSales_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateSales_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete orders & customers'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateSales', + 'id' => 'submitTruncateSales', + ) + ) + ); + + $fields_form_3 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Functional integrity constraints'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Check & fix'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCheckAndFix', + ) + ) + ); + $fields_form_4 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Database cleaning'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Clean & Optimize'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCleanAndOptimize', + ) + ) + ); + + $helper = new HelperForm(); + $helper->module = $this; + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $this->fields_form = array(); + $helper->id = (int)Tools::getValue('id_carrier'); + $helper->identifier = $this->identifier; + $helper->submit_action = 'btnSubmit'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form_1, $fields_form_2, $fields_form_3, $fields_form_4)); + } + + public function getConfigFieldsValues() + { + return array('checkTruncateSales' => 0, 'checkTruncateCatalog' => 0); + } + + public static function getCheckAndFixQueries() + { + $append = []; + if (!version_compare('1.7.0.0', _PS_VERSION_, '>=')) { $append = array( array('access', 'id_tab', 'tab', 'id_tab'), array('compare_product', 'id_compare', 'compare', 'id_compare'), @@ -517,155 +534,152 @@ public static function getCheckAndFixQueries() return array_merge($append, array( // 0 => DELETE FROM __table__, 1 => WHERE __id__ NOT IN, 2 => NOT IN __table__, 3 => __id__ used in the "NOT IN" table, 4 => module_name array('access', 'id_profile', 'profile', 'id_profile'), - array('accessory', 'id_product_1', 'product', 'id_product'), - array('accessory', 'id_product_2', 'product', 'id_product'), - array('address_format', 'id_country', 'country', 'id_country'), - array('attribute', 'id_attribute_group', 'attribute_group', 'id_attribute_group'), - array('carrier_group', 'id_carrier', 'carrier', 'id_carrier'), - array('carrier_group', 'id_group', 'group', 'id_group'), - array('carrier_zone', 'id_carrier', 'carrier', 'id_carrier'), - array('carrier_zone', 'id_zone', 'zone', 'id_zone'), - array('cart_cart_rule', 'id_cart', 'cart', 'id_cart'), - array('cart_product', 'id_cart', 'cart', 'id_cart'), - array('cart_rule_carrier', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), - array('cart_rule_carrier', 'id_carrier', 'carrier', 'id_carrier'), - array('cart_rule_combination', 'id_cart_rule_1', 'cart_rule', 'id_cart_rule'), - array('cart_rule_combination', 'id_cart_rule_2', 'cart_rule', 'id_cart_rule'), - array('cart_rule_country', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), - array('cart_rule_country', 'id_country', 'country', 'id_country'), - array('cart_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), - array('cart_rule_group', 'id_group', 'group', 'id_group'), - array('cart_rule_product_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), - array('cart_rule_product_rule', 'id_product_rule_group', 'cart_rule_product_rule_group', 'id_product_rule_group'), - array('cart_rule_product_rule_value', 'id_product_rule', 'cart_rule_product_rule', 'id_product_rule'), - array('category_group', 'id_category', 'category', 'id_category'), - array('category_group', 'id_group', 'group', 'id_group'), - array('category_product', 'id_category', 'category', 'id_category'), - array('category_product', 'id_product', 'product', 'id_product'), - array('cms', 'id_cms_category', 'cms_category', 'id_cms_category'), - array('cms_block', 'id_cms_category', 'cms_category', 'id_cms_category', 'blockcms'), - array('cms_block_page', 'id_cms', 'cms', 'id_cms', 'blockcms'), - array('cms_block_page', 'id_cms_block', 'cms_block', 'id_cms_block', 'blockcms'), - array('connections', 'id_shop_group', 'shop_group', 'id_shop_group'), - array('connections', 'id_shop', 'shop', 'id_shop'), - array('connections_page', 'id_connections', 'connections', 'id_connections'), - array('connections_page', 'id_page', 'page', 'id_page'), - array('connections_source', 'id_connections', 'connections', 'id_connections'), - array('customer', 'id_shop_group', 'shop_group', 'id_shop_group'), - array('customer', 'id_shop', 'shop', 'id_shop'), - array('customer_group', 'id_group', 'group', 'id_group'), - array('customer_group', 'id_customer', 'customer', 'id_customer'), - array('customer_message', 'id_customer_thread', 'customer_thread', 'id_customer_thread'), - array('customer_thread', 'id_shop', 'shop', 'id_shop'), - array('customization', 'id_cart', 'cart', 'id_cart'), - array('customization_field', 'id_product', 'product', 'id_product'), - array('customized_data', 'id_customization', 'customization', 'id_customization'), - array('delivery', 'id_shop', 'shop', 'id_shop'), - array('delivery', 'id_shop_group', 'shop_group', 'id_shop_group'), - array('delivery', 'id_carrier', 'carrier', 'id_carrier'), - array('delivery', 'id_zone', 'zone', 'id_zone'), - array('editorial', 'id_shop', 'shop', 'id_shop', 'editorial'), - array('favorite_product', 'id_product', 'product', 'id_product','favoriteproducts'), - array('favorite_product', 'id_customer', 'customer', 'id_customer','favoriteproducts'), - array('favorite_product', 'id_shop', 'shop', 'id_shop','favoriteproducts'), - array('feature_product', 'id_feature', 'feature', 'id_feature'), - array('feature_product', 'id_product', 'product', 'id_product'), - array('feature_value', 'id_feature', 'feature', 'id_feature'), - array('group_reduction', 'id_group', 'group', 'id_group'), - array('group_reduction', 'id_category', 'category', 'id_category'), - array('homeslider', 'id_shop', 'shop', 'id_shop', 'homeslider'), - array('homeslider', 'id_homeslider_slides', 'homeslider_slides', 'id_homeslider_slides', 'homeslider'), - array('hook_module', 'id_hook', 'hook', 'id_hook'), - array('hook_module', 'id_module', 'module', 'id_module'), - array('hook_module_exceptions', 'id_hook', 'hook', 'id_hook'), - array('hook_module_exceptions', 'id_module', 'module', 'id_module'), - array('hook_module_exceptions', 'id_shop', 'shop', 'id_shop'), - array('image', 'id_product', 'product', 'id_product'), - array('message', 'id_cart', 'cart', 'id_cart'), - array('message_readed', 'id_message', 'message', 'id_message'), - array('message_readed', 'id_employee', 'employee', 'id_employee'), - array('module_access', 'id_profile', 'profile', 'id_profile'), - array('module_country', 'id_module', 'module', 'id_module'), - array('module_country', 'id_country', 'country', 'id_country'), - array('module_country', 'id_shop', 'shop', 'id_shop'), - array('module_currency', 'id_module', 'module', 'id_module'), - array('module_currency', 'id_currency', 'currency', 'id_currency'), - array('module_currency', 'id_shop', 'shop', 'id_shop'), - array('module_group', 'id_module', 'module', 'id_module'), - array('module_group', 'id_group', 'group', 'id_group'), - array('module_group', 'id_shop', 'shop', 'id_shop'), - array('module_preference', 'id_employee', 'employee', 'id_employee'), - array('orders', 'id_shop', 'shop', 'id_shop'), - array('orders', 'id_shop_group', 'group_shop', 'id_shop_group'), - array('order_carrier', 'id_order', 'orders', 'id_order'), - array('order_cart_rule', 'id_order', 'orders', 'id_order'), - array('order_detail', 'id_order', 'orders', 'id_order'), - array('order_detail_tax', 'id_order_detail', 'order_detail', 'id_order_detail'), - array('order_history', 'id_order', 'orders', 'id_order'), - array('order_invoice', 'id_order', 'orders', 'id_order'), - array('order_invoice_payment', 'id_order', 'orders', 'id_order'), - array('order_invoice_tax', 'id_order_invoice', 'order_invoice', 'id_order_invoice'), - array('order_return', 'id_order', 'orders', 'id_order'), - array('order_return_detail', 'id_order_return', 'order_return', 'id_order_return'), - array('order_slip', 'id_order', 'orders', 'id_order'), - array('order_slip_detail', 'id_order_slip', 'order_slip', 'id_order_slip'), - array('pack', 'id_product_pack', 'product', 'id_product'), - array('pack', 'id_product_item', 'product', 'id_product'), - array('page', 'id_page_type', 'page_type', 'id_page_type'), - array('page_viewed', 'id_shop', 'shop', 'id_shop'), - array('page_viewed', 'id_shop_group', 'shop_group', 'id_shop_group'), - array('page_viewed', 'id_date_range', 'date_range', 'id_date_range'), - array('product_attachment', 'id_attachment', 'attachment', 'id_attachment'), - array('product_attachment', 'id_product', 'product', 'id_product'), - array('product_attribute', 'id_product', 'product', 'id_product'), - array('product_attribute_combination', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), - array('product_attribute_combination', 'id_attribute', 'attribute', 'id_attribute'), - array('product_attribute_image', 'id_image', 'image', 'id_image'), - array('product_attribute_image', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), - array('product_carrier', 'id_product', 'product', 'id_product'), - array('product_carrier', 'id_shop', 'shop', 'id_shop'), - array('product_carrier', 'id_carrier_reference', 'carrier', 'id_reference'), - array('product_country_tax', 'id_product', 'product', 'id_product'), - array('product_country_tax', 'id_country', 'country', 'id_country'), - array('product_country_tax', 'id_tax', 'tax', 'id_tax'), - array('product_download', 'id_product', 'product', 'id_product'), - array('product_group_reduction_cache', 'id_product', 'product', 'id_product'), - array('product_group_reduction_cache', 'id_group', 'group', 'id_group'), - array('product_sale', 'id_product', 'product', 'id_product'), - array('product_supplier', 'id_product', 'product', 'id_product'), - array('product_supplier', 'id_supplier', 'supplier', 'id_supplier'), - array('product_tag', 'id_product', 'product', 'id_product'), - array('product_tag', 'id_tag', 'tag', 'id_tag'), - array('range_price', 'id_carrier', 'carrier', 'id_carrier'), - array('range_weight', 'id_carrier', 'carrier', 'id_carrier'), - array('referrer_cache', 'id_referrer', 'referrer', 'id_referrer'), - array('referrer_cache', 'id_connections_source', 'connections_source', 'id_connections_source'), - array('search_index', 'id_product', 'product', 'id_product'), - array('search_word', 'id_lang', 'lang', 'id_lang'), - array('search_word', 'id_shop', 'shop', 'id_shop'), - array('shop_url', 'id_shop', 'shop', 'id_shop'), - array('specific_price_priority', 'id_product', 'product', 'id_product'), - array('stock', 'id_warehouse', 'warehouse', 'id_warehouse'), - array('stock', 'id_product', 'product', 'id_product'), - array('stock_available', 'id_product', 'product', 'id_product'), - array('stock_mvt', 'id_stock', 'stock', 'id_stock'), - array('tab_module_preference', 'id_employee', 'employee', 'id_employee'), - array('tab_module_preference', 'id_tab', 'tab', 'id_tab'), - array('tax_rule', 'id_country', 'country', 'id_country'), - array('warehouse_carrier', 'id_warehouse', 'warehouse', 'id_warehouse'), - array('warehouse_carrier', 'id_carrier', 'carrier', 'id_carrier'), - array('warehouse_product_location', 'id_product', 'product', 'id_product'), - array('warehouse_product_location', 'id_warehouse', 'warehouse', 'id_warehouse'), - )); + array('accessory', 'id_product_1', 'product', 'id_product'), + array('accessory', 'id_product_2', 'product', 'id_product'), + array('address_format', 'id_country', 'country', 'id_country'), + array('attribute', 'id_attribute_group', 'attribute_group', 'id_attribute_group'), + array('carrier_group', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_group', 'id_group', 'group', 'id_group'), + array('carrier_zone', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_zone', 'id_zone', 'zone', 'id_zone'), + array('cart_cart_rule', 'id_cart', 'cart', 'id_cart'), + array('cart_product', 'id_cart', 'cart', 'id_cart'), + array('cart_rule_carrier', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('cart_rule_combination', 'id_cart_rule_1', 'cart_rule', 'id_cart_rule'), + array('cart_rule_combination', 'id_cart_rule_2', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_country', 'country', 'id_country'), + array('cart_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_group', 'id_group', 'group', 'id_group'), + array('cart_rule_product_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_product_rule', 'id_product_rule_group', 'cart_rule_product_rule_group', 'id_product_rule_group'), + array('cart_rule_product_rule_value', 'id_product_rule', 'cart_rule_product_rule', 'id_product_rule'), + array('category_group', 'id_category', 'category', 'id_category'), + array('category_group', 'id_group', 'group', 'id_group'), + array('category_product', 'id_category', 'category', 'id_category'), + array('category_product', 'id_product', 'product', 'id_product'), + array('cms', 'id_cms_category', 'cms_category', 'id_cms_category'), + array('cms_block', 'id_cms_category', 'cms_category', 'id_cms_category', 'blockcms'), + array('cms_block_page', 'id_cms', 'cms', 'id_cms', 'blockcms'), + array('cms_block_page', 'id_cms_block', 'cms_block', 'id_cms_block', 'blockcms'), + array('connections', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('connections', 'id_shop', 'shop', 'id_shop'), + array('connections_page', 'id_connections', 'connections', 'id_connections'), + array('connections_page', 'id_page', 'page', 'id_page'), + array('connections_source', 'id_connections', 'connections', 'id_connections'), + array('customer', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('customer', 'id_shop', 'shop', 'id_shop'), + array('customer_group', 'id_group', 'group', 'id_group'), + array('customer_group', 'id_customer', 'customer', 'id_customer'), + array('customer_message', 'id_customer_thread', 'customer_thread', 'id_customer_thread'), + array('customer_thread', 'id_shop', 'shop', 'id_shop'), + array('customization', 'id_cart', 'cart', 'id_cart'), + array('customization_field', 'id_product', 'product', 'id_product'), + array('customized_data', 'id_customization', 'customization', 'id_customization'), + array('delivery', 'id_shop', 'shop', 'id_shop'), + array('delivery', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('delivery', 'id_carrier', 'carrier', 'id_carrier'), + array('delivery', 'id_zone', 'zone', 'id_zone'), + array('editorial', 'id_shop', 'shop', 'id_shop', 'editorial'), + array('favorite_product', 'id_product', 'product', 'id_product', 'favoriteproducts'), + array('favorite_product', 'id_customer', 'customer', 'id_customer', 'favoriteproducts'), + array('favorite_product', 'id_shop', 'shop', 'id_shop', 'favoriteproducts'), + array('feature_product', 'id_feature', 'feature', 'id_feature'), + array('feature_product', 'id_product', 'product', 'id_product'), + array('feature_value', 'id_feature', 'feature', 'id_feature'), + array('group_reduction', 'id_group', 'group', 'id_group'), + array('group_reduction', 'id_category', 'category', 'id_category'), + array('homeslider', 'id_shop', 'shop', 'id_shop', 'homeslider'), + array('homeslider', 'id_homeslider_slides', 'homeslider_slides', 'id_homeslider_slides', 'homeslider'), + array('hook_module', 'id_hook', 'hook', 'id_hook'), + array('hook_module', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_hook', 'hook', 'id_hook'), + array('hook_module_exceptions', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_shop', 'shop', 'id_shop'), + array('image', 'id_product', 'product', 'id_product'), + array('message', 'id_cart', 'cart', 'id_cart'), + array('message_readed', 'id_message', 'message', 'id_message'), + array('message_readed', 'id_employee', 'employee', 'id_employee'), + array('module_access', 'id_profile', 'profile', 'id_profile'), + array('module_country', 'id_module', 'module', 'id_module'), + array('module_country', 'id_country', 'country', 'id_country'), + array('module_country', 'id_shop', 'shop', 'id_shop'), + array('module_currency', 'id_module', 'module', 'id_module'), + array('module_currency', 'id_currency', 'currency', 'id_currency'), + array('module_currency', 'id_shop', 'shop', 'id_shop'), + array('module_group', 'id_module', 'module', 'id_module'), + array('module_group', 'id_group', 'group', 'id_group'), + array('module_group', 'id_shop', 'shop', 'id_shop'), + array('module_preference', 'id_employee', 'employee', 'id_employee'), + array('orders', 'id_shop', 'shop', 'id_shop'), + array('orders', 'id_shop_group', 'group_shop', 'id_shop_group'), + array('order_carrier', 'id_order', 'orders', 'id_order'), + array('order_cart_rule', 'id_order', 'orders', 'id_order'), + array('order_detail', 'id_order', 'orders', 'id_order'), + array('order_detail_tax', 'id_order_detail', 'order_detail', 'id_order_detail'), + array('order_history', 'id_order', 'orders', 'id_order'), + array('order_invoice', 'id_order', 'orders', 'id_order'), + array('order_invoice_payment', 'id_order', 'orders', 'id_order'), + array('order_invoice_tax', 'id_order_invoice', 'order_invoice', 'id_order_invoice'), + array('order_return', 'id_order', 'orders', 'id_order'), + array('order_return_detail', 'id_order_return', 'order_return', 'id_order_return'), + array('order_slip', 'id_order', 'orders', 'id_order'), + array('order_slip_detail', 'id_order_slip', 'order_slip', 'id_order_slip'), + array('pack', 'id_product_pack', 'product', 'id_product'), + array('pack', 'id_product_item', 'product', 'id_product'), + array('page', 'id_page_type', 'page_type', 'id_page_type'), + array('page_viewed', 'id_shop', 'shop', 'id_shop'), + array('page_viewed', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('page_viewed', 'id_date_range', 'date_range', 'id_date_range'), + array('product_attachment', 'id_attachment', 'attachment', 'id_attachment'), + array('product_attachment', 'id_product', 'product', 'id_product'), + array('product_attribute', 'id_product', 'product', 'id_product'), + array('product_attribute_combination', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_attribute_combination', 'id_attribute', 'attribute', 'id_attribute'), + array('product_attribute_image', 'id_image', 'image', 'id_image'), + array('product_attribute_image', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_carrier', 'id_product', 'product', 'id_product'), + array('product_carrier', 'id_shop', 'shop', 'id_shop'), + array('product_carrier', 'id_carrier_reference', 'carrier', 'id_reference'), + array('product_country_tax', 'id_product', 'product', 'id_product'), + array('product_country_tax', 'id_country', 'country', 'id_country'), + array('product_country_tax', 'id_tax', 'tax', 'id_tax'), + array('product_download', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_group', 'group', 'id_group'), + array('product_sale', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_supplier', 'supplier', 'id_supplier'), + array('product_tag', 'id_product', 'product', 'id_product'), + array('product_tag', 'id_tag', 'tag', 'id_tag'), + array('range_price', 'id_carrier', 'carrier', 'id_carrier'), + array('range_weight', 'id_carrier', 'carrier', 'id_carrier'), + array('referrer_cache', 'id_referrer', 'referrer', 'id_referrer'), + array('referrer_cache', 'id_connections_source', 'connections_source', 'id_connections_source'), + array('search_index', 'id_product', 'product', 'id_product'), + array('search_word', 'id_lang', 'lang', 'id_lang'), + array('search_word', 'id_shop', 'shop', 'id_shop'), + array('shop_url', 'id_shop', 'shop', 'id_shop'), + array('specific_price_priority', 'id_product', 'product', 'id_product'), + array('stock', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('stock', 'id_product', 'product', 'id_product'), + array('stock_available', 'id_product', 'product', 'id_product'), + array('stock_mvt', 'id_stock', 'stock', 'id_stock'), + array('tab_module_preference', 'id_employee', 'employee', 'id_employee'), + array('tab_module_preference', 'id_tab', 'tab', 'id_tab'), + array('tax_rule', 'id_country', 'country', 'id_country'), + array('warehouse_carrier', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('warehouse_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('warehouse_product_location', 'id_product', 'product', 'id_product'), + array('warehouse_product_location', 'id_warehouse', 'warehouse', 'id_warehouse'), + )); } public static function getCatalogRelatedTables() { - if (version_compare('1.7.0.0', _PS_VERSION_, '>=')) { - $append = array( - - ); - } else { + $append = []; + if (!version_compare('1.7.0.0', _PS_VERSION_, '>=')) { $append = array( 'compare_product', 'scene_products', diff --git a/translations/index.php b/translations/index.php index e5064df..2a40ec7 100644 --- a/translations/index.php +++ b/translations/index.php @@ -23,13 +23,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ - + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); - + header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); - + header("Location: ../"); -exit; \ No newline at end of file +exit; diff --git a/views/index.php b/views/index.php index 8761a00..3cc8f39 100755 --- a/views/index.php +++ b/views/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/views/templates/admin/_configure/helpers/form/index.php b/views/templates/admin/_configure/helpers/form/index.php index 8761a00..3cc8f39 100755 --- a/views/templates/admin/_configure/helpers/form/index.php +++ b/views/templates/admin/_configure/helpers/form/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/views/templates/admin/_configure/helpers/index.php b/views/templates/admin/_configure/helpers/index.php index 8761a00..3cc8f39 100755 --- a/views/templates/admin/_configure/helpers/index.php +++ b/views/templates/admin/_configure/helpers/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/views/templates/admin/_configure/index.php b/views/templates/admin/_configure/index.php index 8761a00..3cc8f39 100755 --- a/views/templates/admin/_configure/index.php +++ b/views/templates/admin/_configure/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/views/templates/admin/index.php b/views/templates/admin/index.php index 8761a00..3cc8f39 100755 --- a/views/templates/admin/index.php +++ b/views/templates/admin/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit; diff --git a/views/templates/index.php b/views/templates/index.php index 8761a00..3cc8f39 100755 --- a/views/templates/index.php +++ b/views/templates/index.php @@ -32,4 +32,4 @@ header('Pragma: no-cache'); header('Location: ../'); -exit; \ No newline at end of file +exit;