<?php
$database_name = 'site-ee-com';
$site_id_copy = 3;
$better_pages_upload_dir = 24;
$fields = array();
$field_groups = array();
$entries = array();
$grids = array();
$grids_colums = array();
$template_original = array();
$template_ids = array();
echo 'migration began <br>';
/*
TEMPLATE matching BEGIN
*/
$query_sql = "SELECT tm.template_name, tm.template_id, tg.group_id, tg.group_name FROM exp_templates as tm LEFT JOIN exp_template_groups as tg ON tg.group_id = tm.group_id WHERE tm.site_id = 1";
$query = ee()->db->query( $query_sql );
foreach ($query->result_array() as $key => $value) {
$template_original[$value['template_name'] . '_' . $value['group_name']] = $value['template_id'];
}
$query_sql = "SELECT tm.template_name, tm.template_id, tg.group_id, tg.group_name FROM exp_templates as tm LEFT JOIN exp_template_groups as tg ON tg.group_id = tm.group_id WHERE tm.site_id = " . $site_id_copy;
$query = ee()->db->query( $query_sql );
foreach ($query->result_array() as $key => $value) {
if( isset($template_original[$value['template_name'] . '_' . $value['group_name']])) {
$template_ids[$template_original[$value['template_name'] . '_' . $value['group_name']]] = $value['template_id'];
}
}
/*
TEMPLATE matching END
*/
$query_sql = "SELECT us.field_id as original, ca.field_id as caentry, ca.group_id as gid, us.group_id as original_gid FROM exp_channel_fields as us LEFT JOIN exp_channel_fields as ca ON us.field_name = ca.field_name WHERE us.site_id = 1 AND ca.site_id = ". $site_id_copy;
$query = ee()->db->query( $query_sql );
foreach ($query->result_array() as $key => $value) {
$fields[$value['original']]['ca'] = $value['caentry'];
$field_groups[$value['original_gid']] = $value['gid'];
};
$query_sql = "SELECT us.entry_id as original, ca.entry_id as caentry FROM exp_channel_titles as us LEFT JOIN exp_channel_titles as ca ON us.url_title = ca.url_title WHERE us.site_id = 1 AND ca.site_id = ". $site_id_copy;
$query = ee()->db->query( $query_sql );
foreach ($query->result_array() as $key => $value) {
$entries[$value['original']]['ca'] = $value['caentry'];
};
/*
CLONE better_pages BEGIN
*/
$query_sql = "SELECT * FROM exp_better_pages_hidden WHERE site_id = 1";
$query = ee()->db->query( $query_sql );
$data = array();
foreach ($query->result_array() as $key => $value) {
$data[] = array(
'bpHidden_id' => null,
'site_id' => $site_id_copy,
'group_id' => $field_groups[$value['group_id']],
'template_id' => $template_ids[$value['template_id']],
'field_id' => $fields[$value['field_id']]['ca']
);
}
if(count($data) > 0){
// ee()->db->insert_batch("exp_better_pages_hidden", $data);
}
$query_sql = "SELECT * FROM exp_better_pages_templates WHERE site_id = 1";
$query = ee()->db->query( $query_sql );
$data = array();
foreach ($query->result_array() as $key => $value) {
$data[] = array(
'bpTemplate_id' => null,
'site_id' => $site_id_copy,
'group_id' => $field_groups[$value['group_id']],
'template_id' => $template_ids[$value['template_id']]
);
}
if(count($data) > 0){
// ee()->db->insert_batch("exp_better_pages_templates", $data);
}
$query_sql = "SELECT * FROM exp_better_pages_thumbs WHERE site_id = 1";
$query = ee()->db->query( $query_sql );
$data = array();
foreach ($query->result_array() as $key => $value) {
$data[] = array(
'bp_id' => null,
'site_id' => $site_id_copy,
'upload_dir_id' => $better_pages_upload_dir,
'template_id' => $template_ids[$value['template_id']],
'thumb' => $value['thumb']
);
}
// echo '<pre>';var_dump($data);echo '</pre>';
if(count($data) > 0){
// ee()->db->insert_batch("exp_better_pages_thumbs", $data);
}
/*
CLONE better_pages END
*/
// die('complete');
/*
Grid migration START
*/
$query_sql = "SELECT GROUP_CONCAT(field_id separator ',') as field_ids FROM exp_channel_fields WHERE site_id = 1 AND field_type = 'grid'";
$query = ee()->db->query( $query_sql );
$original_grid_ids = $query->result_array()[0]['field_ids'];
$query_sql = "SELECT * FROM exp_grid_columns WHERE field_id IN (" . $query->result_array()[0]['field_ids'] . ")";
$query = ee()->db->query( $query_sql );
foreach ($query->result_array() as $key => $value) {
$query_sub = ee()->db->query( "SELECT * FROM exp_grid_columns WHERE field_id = " . $fields[$value['field_id']]['ca'] . " AND col_name = '" . $value['col_name'] . "'");
$grids_colums[$value['col_id']] = $query_sub->result_array()[0]['col_id'];
}
/**/
$query_sql = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='$database_name' AND TABLE_NAME LIKE '%exp_channel_grid%';";
$query_grid_tables = ee()->db->query( $query_sql );
foreach ($query_grid_tables->result_array() as $key => $value) {
$field_id = str_replace('exp_channel_grid_field_', '', $value['TABLE_NAME']);
$query_sql = "SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE TABLE_SCHEMA='$database_name' AND `TABLE_NAME`='" . $value['TABLE_NAME'] . "' AND `COLUMN_NAME` LIKE '%col_id%'";
$query_cols = ee()->db->query( $query_sql );
foreach ($query_cols->result_array() as $col_key => $col_value) {
$grids[$field_id]['name'][] = $col_value['COLUMN_NAME'];
}
};
$query_sql = "SELECT field_id FROM exp_channel_fields WHERE site_id = 1 AND field_type ='grid'";
$query = ee()->db->query( $query_sql );
foreach ($query->result() as $value) {
$data = array();
$query_sql = "SELECT * FROM exp_channel_grid_field_" . $value->field_id;
$query_grid = ee()->db->query( $query_sql);
foreach ($query_grid->result() as $index => $query_grid_value) {
$data[$index] = array (
'row_id' => null,
'entry_id' => $entries[$query_grid_value->entry_id]['ca'],
'row_order' => 0
);
foreach ($grids[$value->field_id]['name'] as $column_index => $query_grid_column) {
$data[$index]['col_id_'. $grids_colums[str_replace('col_id_', '', $query_grid_column)]] = $query_grid_value->$query_grid_column;
}
}
if(count($data) > 0){
// ee()->db->insert_batch("exp_channel_grid_field_" . $fields[$value->field_id]['ca'], $data);
}
}
/*
Grid migration END
*/
/*
Rel migration start WHERE site_id = 1
*/
$query_sql = "SELECT * FROM exp_relationships WHERE (field_id IN (" . implode(',',array_keys($fields)) . ") AND grid_field_id = 0) OR (grid_field_id IN (" . implode(',',array_keys($fields)) . ")) ";
$query = ee()->db->query( $query_sql );
$data = array();
foreach ($query->result() as $key => $value) {
$data[] = array(
'relationship_id' => null,
'parent_id' => $entries[$value->parent_id]['ca'],
'child_id' => $entries[$value->child_id]['ca'],
'field_id' => (isset($fields[$value->grid_field_id]['ca']) ? $grids_colums[$value->grid_col_id] : $fields[$value->field_id]['ca']),
'grid_field_id' => (isset($fields[$value->grid_field_id]['ca']) ? $fields[$value->grid_field_id]['ca'] : 0),
'grid_col_id' => isset($grids_colums[$value->grid_col_id]) ? $grids_colums[$value->grid_col_id] : 0,
'grid_row_id' => $value->grid_row_id,
'order' => $value->order,
);
}
//ee()->db->insert_batch('exp_relationships', $data);
/*
Rel migration END
*/
/*
Assets migration BEGIN
*/
$query_sql = "SELECT * FROM exp_assets_selections WHERE field_id IN (SELECT field_id FROM exp_channel_fields WHERE site_id = 1)";
$query = ee()->db->query( $query_sql );
$data = array();
foreach ($query->result() as $key => $value) {
$data[] = array(
'file_id' => $value->file_id,
'entry_id' => $entries[$value->entry_id]['ca'],
'field_id' => $fields[$value->field_id]['ca'],
'col_id' => ($value->content_type == 'grid' ? $grids_colums[$value->col_id] : $value->col_id ),
'row_id' => $value->row_id,
'var_id' => $value->var_id,
'element_id' => $value->element_id,
'content_type' => $value->content_type,
'sort_order' => $value->sort_order,
'is_draft' => $value->is_draft
);
}
ee()->db->insert_batch('exp_assets_selections', $data);
/*
Assets migration END
*/
echo 'migration END <br>';
?>