Function Reference: geodir_merge_location
Summary
Merge locations.
Global Values
- $wpdb
- (object) (required) WordPress Database object. 
- Default: None
 
- $plugin_prefix
- (string) (required) Geodirectory plugin table prefix. 
- Default: None
 
Package
GeoDirectory_Location_Manager
Change Log
Since: 1.0.0
Source File
geodir_merge_location() is located in geodir_location_manager/geodir_location_functions.php [Line: 1338]
Source Code
function geodir_merge_location()
{
	global $wpdb,$plugin_prefix;
	if(isset($_REQUEST['location_merge_nonce']) && current_user_can( 'manage_options' )){
		if ( !wp_verify_nonce( $_REQUEST['location_merge_nonce'], 'location_merge_wpnonce' ) )
		exit;
		$geodir_location_merge_ids = trim($_REQUEST['geodir_location_merge_ids'], ',');
		$gd_merge = $_REQUEST['gd_merge'];
		$gd_city = $_REQUEST['gd_city'];
		$gd_region = $_REQUEST['gd_region'];
		$gd_country = $_REQUEST['gd_country'];
		$gd_lat = $_REQUEST['gd_lat'];
		$gd_log = $_REQUEST['gd_log'];
		$geodir_postlocation_merge_ids = array();
		$geodir_merge_ids_array = explode(',',$geodir_location_merge_ids);
		$geodir_merge_ids_length = count($geodir_merge_ids_array);
		$format = array_fill(0, $geodir_merge_ids_length, '%d');
		$format = implode(',', $format);
		$geodir_postlocation_merge_ids = $geodir_merge_ids_array;
		$geodir_postlocation_merge_ids[] = $gd_merge;
		$gd_location_sql = $wpdb->prepare("select * from ".POST_LOCATION_TABLE." WHERE location_id IN ($format) AND location_id!=%d", $geodir_postlocation_merge_ids );
		 $gd_locationinfo = $wpdb->get_results($gd_location_sql);
		 $check_default = '';
		 foreach($gd_locationinfo as $gd_locationinfo_obj)
		 {
			$locationid = $gd_locationinfo_obj->location_id;
			if(!$check_default){
				$check_default = $wpdb->get_var(
					$wpdb->prepare(
						"SELECT location_id FROM ".POST_LOCATION_TABLE." WHERE is_default='1' AND location_id = %d",
						array($locationid)
					)
				);
			}
			/*$location_hood = $wpdb->get_results(
				$wpdb->prepare(
					"SELECT hood_id FROM ".POST_NEIGHBOURHOOD_TABLE." WHERE hood_location_id=%d",
					array($locationid)
				)
			);
			if(!empty($location_hood)){
				foreach($location_hood as $hood_del){
					geodir_neighbourhood_delete($hood_del->hood_id);
				}
			}*/
			$gd_location_del = $wpdb->prepare("DELETE FROM ".POST_LOCATION_TABLE." WHERE  location_id = %d",array($locationid));
			$wpdb->query($gd_location_del);
		 }
		 	$country_slug = create_location_slug($gd_country);
			$region_slug = create_location_slug($gd_region);
			$city_slug = create_location_slug($gd_city);
		 //FILL SELECTED CITY IN MERGE LOCATIONS POST
		 $geodir_posttypes = geodir_get_posttypes();
		 foreach($geodir_posttypes as $geodir_posttype){
			 $table = $plugin_prefix . $geodir_posttype . '_detail';
			 $gd_placedetail_sql = $wpdb->prepare(
			 					"select * from ". $table." WHERE post_location_id IN ($format)",
								$geodir_merge_ids_array
								);
			 $gd_placedetailinfo = $wpdb->get_results($gd_placedetail_sql);
			 foreach($gd_placedetailinfo as $gd_placedetailinfo_obj)
			 {
				$postid = $gd_placedetailinfo_obj->post_id;
				$post_locations =  '['.$city_slug.'],['.$region_slug.'],['.$country_slug.']'; // set all overall post location
				 $gd_rep_locationid = $wpdb->prepare("UPDATE ". $table." SET
										post_location_id=%d,
										post_city	= %s,
										post_region	= %s,
										post_country	= %s,
										post_locations = %s
										WHERE  post_id = %d",
										array($gd_merge,$gd_city,$gd_region,$gd_country,$post_locations,$postid));
				$wpdb->query($gd_rep_locationid);
			 }
		 }
		$setdefault = '';
		if(isset($check_default) && $check_default!='')
		{
			$setdefault = ", is_default='1'";
		}
		//UPDATE SELECTED LOCATION
		$sql = $wpdb->prepare("UPDATE ".POST_LOCATION_TABLE." SET
				country=%s,
				region=%s,
				city=%s,
				city_latitude=%s,
				city_longitude=%s,
				country_slug = %s,
				region_slug = %s,
				city_slug = %s
				".$setdefault."
				WHERE location_id = %d",
				array($gd_country,$gd_region,$gd_city,$gd_lat,$gd_log,$country_slug,$region_slug,$city_slug,$gd_merge));
		$wpdb->query($sql);
		if($setdefault != '')
			geodir_location_set_default($gd_merge);
		/* ----- update hooks table ---- */
		$location_hood_info = $wpdb->query(
			$wpdb->prepare(
				"UPDATE ".POST_NEIGHBOURHOOD_TABLE." SET hood_location_id=".$gd_merge." WHERE hood_location_id IN ($format)",
				$geodir_merge_ids_array
			)
		);
			$msg = MSG_LOCATION_MERGE_SUCCESS;
			$msg = urlencode($msg);
		 $location = admin_url()."admin.php?page=geodirectory&tab=managelocation_fields&subtab=geodir_location_manager&location_success=".$msg;
		 wp_redirect($location);
		 exit;
		}else{
			wp_redirect(home_url().'/?geodir_signup=true');
			exit();
		}
}