public static function OnArticleCopy($p_srcArticleNumber, $p_destArticleNumber, $p_copyTranslations, $p_userId = null)
{
global $g_ado_db;
Geo_MapLocation::CleanFound();
$list_fill = '%%id_list%%';
$lang_fill = '%%id_langs%%';
$map_columns = array('fk_article_number', 'MapRank', 'MapUsage', 'MapCenterLongitude', 'MapCenterLatitude', 'MapDisplayResolution', 'MapProvider', 'MapWidth', 'MapHeight', 'MapName', 'IdUser');
$map_colstr = implode(', ', $map_columns);
$map_colqms = implode(', ', str_split(str_repeat('?', count($map_columns))));
$queryStr_map_sel = "SELECT id, {$map_colstr} FROM Maps WHERE fk_article_number = ?";
$queryStr_map_ins = "INSERT INTO Maps ({$map_colstr}) VALUES ({$map_colqms})";
$maploc_columns = array('fk_map_id', 'fk_location_id', 'poi_style', 'rank');
$maploc_colstr = implode(', ', $maploc_columns);
$maploc_colqms = implode(', ', str_split(str_repeat('?', count($maploc_columns))));
$queryStr_maploc_sel = "SELECT id, {$maploc_colstr} FROM MapLocations WHERE fk_map_id IN (%%id_list%%)";
$queryStr_maploc_ins = "INSERT INTO MapLocations ({$maploc_colstr}) VALUES ({$maploc_colqms})";
$maploclan_columns = array('fk_maplocation_id', 'fk_language_id', 'fk_content_id', 'poi_display');
$maploclan_colstr = implode(', ', $maploclan_columns);
$maploclan_colqms = implode(', ', str_split(str_repeat('?', count($maploclan_columns))));
$queryStr_maploclan_sel = "SELECT {$maploclan_colstr} FROM MapLocationLanguages WHERE fk_maplocation_id IN (%%id_list%%) AND fk_language_id IN (%%id_langs%%)";
$queryStr_maploclan_ins = "INSERT INTO MapLocationLanguages ({$maploclan_colstr}) VALUES ({$maploclan_colqms})";
$maplocmed_columns = array('fk_maplocation_id', 'fk_multimedia_id');
$maplocmed_colstr = implode(', ', $maplocmed_columns);
$maplocmed_colqms = implode(', ', str_split(str_repeat('?', count($maplocmed_columns))));
$queryStr_maplocmed_sel = "SELECT {$maplocmed_colstr} FROM MapLocationMultimedia WHERE fk_maplocation_id IN (%%id_list%%)";
$queryStr_maplocmed_ins = "INSERT INTO MapLocationMultimedia ({$maplocmed_colstr}) VALUES ({$maplocmed_colqms})";
if (0 == count($p_copyTranslations)) {
return;
}
$lang_str = implode(', ', $p_copyTranslations);
$map_ids = array();
$map_sel_params = array();
$map_sel_params[] = $p_srcArticleNumber;
$rows = $g_ado_db->GetAll($queryStr_map_sel, $map_sel_params);
foreach ($rows as $row) {
$old_map_id = $row['id'];
$new_user_id = $p_userId;
if (is_null($new_user_id)) {
$new_user_id = $row['IdUser'];
}
$map_ins_params = array();
$map_ins_params[] = $p_destArticleNumber;
$map_ins_params[] = $row['MapRank'];
$map_ins_params[] = $row['MapUsage'];
$map_ins_params[] = $row['MapCenterLongitude'];
$map_ins_params[] = $row['MapCenterLatitude'];
$map_ins_params[] = $row['MapDisplayResolution'];
$map_ins_params[] = $row['MapProvider'];
$map_ins_params[] = $row['MapWidth'];
$map_ins_params[] = $row['MapHeight'];
$map_ins_params[] = $row['MapName'];
$map_ins_params[] = $new_user_id;
$success = $g_ado_db->Execute($queryStr_map_ins, $map_ins_params);
// taking the map ID
$new_map_id = $g_ado_db->Insert_ID();
$map_ids[$old_map_id] = $new_map_id;
}
if (0 == count($map_ids)) {
return;
}
$map_ids_str = implode(', ', array_keys($map_ids));
$queryStr_maploc_sel = str_replace($list_fill, $map_ids_str, $queryStr_maploc_sel);
$maploc_ids = array();
$maploc_sel_params = array();
$rows = $g_ado_db->GetAll($queryStr_maploc_sel, $maploc_sel_params);
foreach ($rows as $row) {
$old_maploc_id = $row['id'];
$old_map_id = $row['fk_map_id'];
$new_map_id = $map_ids[$old_map_id];
$maploc_ins_params = array();
$maploc_ins_params[] = $new_map_id;
$maploc_ins_params[] = $row['fk_location_id'];
$maploc_ins_params[] = $row['poi_style'];
$maploc_ins_params[] = $row['rank'];
$success = $g_ado_db->Execute($queryStr_maploc_ins, $maploc_ins_params);
// taking the map ID
$new_maploc_id = $g_ado_db->Insert_ID();
$maploc_ids[$old_maploc_id] = $new_maploc_id;
}
if (0 == count($maploc_ids)) {
return;
}
$maploc_ids_str = implode(', ', array_keys($maploc_ids));
$queryStr_maploclan_sel = str_replace($list_fill, $maploc_ids_str, $queryStr_maploclan_sel);
$queryStr_maploclan_sel = str_replace($lang_fill, $lang_str, $queryStr_maploclan_sel);
$maploclan_sel_params = array();
$rows = $g_ado_db->GetAll($queryStr_maploclan_sel, $maploclan_sel_params);
foreach ($rows as $row) {
$old_maploc_id = $row['fk_maplocation_id'];
$new_maploc_id = $maploc_ids[$old_maploc_id];
$maploclan_ins_params = array();
$maploclan_ins_params[] = $new_maploc_id;
$maploclan_ins_params[] = $row['fk_language_id'];
$maploclan_ins_params[] = $row['fk_content_id'];
$maploclan_ins_params[] = $row['poi_display'];
$success = $g_ado_db->Execute($queryStr_maploclan_ins, $maploclan_ins_params);
}
$queryStr_maplocmed_sel = str_replace($list_fill, $maploc_ids_str, $queryStr_maplocmed_sel);
$maplocmed_sel_params = array();
$rows = $g_ado_db->GetAll($queryStr_maplocmed_sel, $maplocmed_sel_params);
foreach ($rows as $row) {
$old_maploc_id = $row['fk_maplocation_id'];
$new_maploc_id = $maploc_ids[$old_maploc_id];
$maplocmed_ins_params = array();
$maplocmed_ins_params[] = $new_maploc_id;
$maplocmed_ins_params[] = $row['fk_multimedia_id'];
$success = $g_ado_db->Execute($queryStr_maplocmed_ins, $maplocmed_ins_params);
}
}