Easily transfer data betweem two databases. The destination db must have access to old db.
labels: php , cs-cart , cscart , database , mysql , migrate
<?php
$php_value = phpversion();
if (version_compare($php_value, '5.6.0') == -1) {
echo 'Currently installed PHP version (' . $php_value . ') is not supported. Minimal required PHP version is 5.6.0.';
die();
}
define('AREA', 'C');
try {
require(dirname(__FILE__) . '/init.php');
} catch (Exception $e) {
\Tygh\Tools\ErrorHandler::handleException($e);
} catch (Throwable $e) {
\Tygh\Tools\ErrorHandler::handleException($e);
}
function fn_copy_table($from, $to, $extra = '')
{
/* Warning : Input is not sanitized */
$old_columns = db_get_array("SHOW COLUMNS FROM " . $from);
$new_columns = db_get_array("SHOW COLUMNS FROM " . $to);
foreach ($old_columns as &$column) {
$column = $column['Field'];
}
unset($column);
foreach ($new_columns as &$column) {
$column = $column['Field'];
}
$fields = array_intersect($old_columns, $new_columns);
foreach ($fields as &$field) {
$field = "`$field`";
}
$fields = implode(',', $fields);
db_query("INSERT INTO $to ($fields) SELECT $fields FROM $from $extra");
}
function fn_transfer_categories()
{
db_query("TRUNCATE eshopkatoikidio.cscart_categories");
fn_copy_table('eshopkatoikidio_old.cscart_categories', 'eshopkatoikidio.cscart_categories');
db_query("TRUNCATE eshopkatoikidio.cscart_category_descriptions");
fn_copy_table('eshopkatoikidio_old.cscart_category_descriptions', 'eshopkatoikidio.cscart_category_descriptions');
db_query("DELETE FROM eshopkatoikidio.cscart_seo_names WHERE `type`='c'");
fn_copy_table('eshopkatoikidio_old.cscart_seo_names', 'eshopkatoikidio.cscart_seo_names', "WHERE type='c'");
}
function fn_transfer_products()
{
$tables = ['cscart_products', 'cscart_products_categories', 'cscart_product_descriptions', 'cscart_product_prices', 'cscart_ult_product_descriptions', 'cscart_ult_product_prices'];
foreach ($tables as $table) {
db_query("TRUNCATE eshopkatoikidio.$table");
fn_copy_table("eshopkatoikidio_old.$table", "eshopkatoikidio.$table");
}
db_query("DELETE `cscart_images`,`cscart_images_links` FROM `cscart_images` INNER JOIN cscart_images_links ON cscart_images_links.detailed_id = cscart_images.image_id AND cscart_images_links.object_type ='product'");
db_query("DELETE FROM eshopkatoikidio.cscart_images_links WHERE `object_type`='product'");
fn_copy_table('eshopkatoikidio_old.cscart_images_links', 'eshopkatoikidio.cscart_images_links', "WHERE object_type='product'");
$image_ids = db_get_fields("SELECT detailed_id FROM eshopkatoikidio_old.cscart_images_links WHERE object_type='product'");
foreach ($image_ids as $image_id) {
fn_copy_table('eshopkatoikidio_old.cscart_images', 'eshopkatoikidio.cscart_images', "WHERE image_id = $image_id");
}
db_query("DELETE FROM eshopkatoikidio.cscart_seo_names WHERE `type`='p'");
fn_copy_table('eshopkatoikidio_old.cscart_seo_names', 'eshopkatoikidio.cscart_seo_names', "WHERE type='p'");
}
function fn_transfer_product_features()
{
$tables = ['cscart_product_features', 'cscart_product_features_descriptions', 'cscart_product_features_values', 'cscart_product_features_descriptions', 'cscart_product_feature_variants', 'cscart_product_feature_variant_descriptions'];
foreach ($tables as $table) {
db_query("TRUNCATE eshopkatoikidio.$table");
fn_copy_table("eshopkatoikidio_old.$table", "eshopkatoikidio.$table");
}
db_query("DELETE FROM eshopkatoikidio.cscart_ult_objects_sharing WHERE `share_object_type`='product_features'");
fn_copy_table('eshopkatoikidio_old.cscart_ult_objects_sharing', 'eshopkatoikidio.cscart_ult_objects_sharing', "WHERE share_object_type='product_features'");
db_query("DELETE `cscart_images`,`cscart_images_links` FROM `cscart_images` INNER JOIN cscart_images_links ON cscart_images_links.detailed_id = cscart_images.image_id AND cscart_images_links.object_type ='feature_variant'");
db_query("DELETE FROM eshopkatoikidio.cscart_images_links WHERE `object_type`='feature_variant'");
fn_copy_table('eshopkatoikidio_old.cscart_images_links', 'eshopkatoikidio.cscart_images_links', "WHERE object_type='feature_variant'");
$image_ids = db_get_fields("SELECT detailed_id FROM eshopkatoikidio_old.cscart_images_links WHERE object_type='feature_variant'");
foreach ($image_ids as $image_id) {
fn_copy_table('eshopkatoikidio_old.cscart_images', 'eshopkatoikidio.cscart_images', "WHERE image_id = $image_id");
}
db_query("DELETE FROM eshopkatoikidio.cscart_seo_names WHERE `type`='e'");
fn_copy_table('eshopkatoikidio_old.cscart_seo_names', 'eshopkatoikidio.cscart_seo_names', "WHERE type='e'");
}
function fn_transfer_pages()
{
$tables = ['cscart_pages', ' cscart_page_descriptions'];
foreach ($tables as $table) {
db_query("TRUNCATE eshopkatoikidio.$table");
fn_copy_table("eshopkatoikidio_old.$table", "eshopkatoikidio.$table");
}
db_query("DELETE FROM eshopkatoikidio.cscart_ult_objects_sharing WHERE `share_object_type`='pages'");
fn_copy_table('eshopkatoikidio_old.cscart_ult_objects_sharing', 'eshopkatoikidio.cscart_ult_objects_sharing', "WHERE share_object_type='pages'");
db_query("DELETE FROM eshopkatoikidio.cscart_seo_names WHERE `type`='a'");
fn_copy_table('eshopkatoikidio_old.cscart_seo_names', 'eshopkatoikidio.cscart_seo_names', "WHERE type='a'");
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_REQUEST['categories'])) {
fn_transfer_categories();
}
if (isset($_REQUEST['products'])) {
fn_transfer_products();
}
if (isset($_REQUEST['features'])) {
fn_transfer_product_features();
}
if (isset($_REQUEST['pages'])) {
fn_transfer_pages();
}
header('Location: transfer_data.php');
}
?>
<style>
body {
margin: 0;
}
form {
display: flex;
align-items: center;
width: 100%;
height: 100vh;
justify-content: center;
flex-direction: column;
margin: 0;
}
input {
font-size: 18px;
padding: 5px 10px;
width: 250px;
margin: 5px;
}
</style>
<form method="post">
<input type="submit" name="products" value="Transfer Products" />
<input type="submit" name="categories" value="Transfer Categories" />
<input type="submit" name="features" value="Transfer Product Features" />
<input type="submit" name="pages" value="Transfer Pages" />
</form>