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(); } }