Function Reference: geodir_update_location_translate

Summary

Update location with translated string.

Global Values

$wpdb
(object) (required) WordPress Database object.

Default: None
$plugin_prefix
(string) (required) Geodirectory plugin table prefix.

Default: None

Package

GeoDirectory_Location_Manager

Parameters

($country_slug) (required)

Default: None

Return Values

(bool)

    Change Log

    Since: 1.0.0

    Actions

    ‘geodir_action_update_location_translate’ [Line: 2622]

    Filters

    ‘geodir_filter_update_location_translate’ [Line: 2620]

    Source File

    geodir_update_location_translate() is located in geodir_location_manager/geodir_location_functions.php [Line: 2603]

    Source Code

    function geodir_update_location_translate( $country_slug ) {
    	global $wpdb, $plugin_prefix;
    	if( $country_slug == '' ) {
    		return false;
    	}
    
    	$country = get_post_country_by_slug( $country_slug );
    	if( $country == '' ) {
    		return false;
    	}
    
    	$geodir_posttypes = geodir_get_posttypes();
    
    	$country_translated = __( $country, GEODIRECTORY_TEXTDOMAIN );
    	$country_translated = trim( wp_unslash( $country_translated ) );
    	$country_slug_translated = sanitize_title( $country_translated );
    
    	$country_slug = apply_filters( 'geodir_filter_update_location_translate', $country_slug, $country, $country_translated, $country_slug_translated );
    
    	do_action( 'geodir_action_update_location_translate', $country_slug, $country, $country_translated, $country_slug_translated );
    
    	if( $country_slug == $country_slug_translated ) {
    		return false;
    	}
    
    	$sql = $wpdb->prepare( "SELECT location_id FROM " . POST_LOCATION_TABLE . " WHERE country_slug=%s", array( $country_slug ) );
    	$location_ids = $wpdb->get_col( $sql );
    
    	/* update in post locations table */
    	$update_locations = false;
    	//$sql = $wpdb->prepare( "UPDATE " . POST_LOCATION_TABLE . " SET country=%s, country_slug=%s WHERE country_slug=%s", array( $country_translated, $country_slug_translated, $country_slug ) );
    	$sql = $wpdb->prepare( "UPDATE " . POST_LOCATION_TABLE . " SET country_slug=%s WHERE country_slug=%s", array( $country_slug_translated, $country_slug ) );
    	$update_locations = $wpdb->query($sql);
    
    	/* update in post listings table */
    	$update_listings = false;
    	if( !empty( $location_ids ) ) {
    		$location_ids = implode( ",", $location_ids );
    		foreach( $geodir_posttypes as $geodir_posttype ) {
    			$table = $plugin_prefix . $geodir_posttype . '_detail';
    
    			$sql = "SELECT post_id, post_locations, post_location_id FROM " . $table . " WHERE post_location_id IN(" . $location_ids  . ")";
    			$listings = $wpdb->get_results( $sql );
    
    			if( !empty( $listings ) ) {
    				foreach( $listings as $listing ) {
    					$post_id = $listing->post_id;
    					$location_id = $listing->post_location_id;
    					$post_locations = $listing->post_locations;
    					if( $post_locations != '' ) {
    						$post_locations_arr = explode( ",", $post_locations );
    
    						if( isset( $post_locations_arr[2] ) && trim($post_locations_arr[2]) != '[]' ) {
    							$post_locations_arr[2] = '[' . $country_slug_translated . ']';
    							$post_locations = implode( ",", $post_locations_arr );
    						} else {
    							$post_locations = '';
    						}
    					}
    
    					if( $post_locations == '' ) {
    						$location_info = geodir_get_location_by_id( '', $location_id );
    						if( !empty( $location_info ) && isset( $location_info->location_id ) ) {
    							$post_locations = '['. $location_info->city_slug .'],['. $location_info->region_slug .'],['. $country_slug_translated .']';
    						}
    					}
    
    					$sql = $wpdb->prepare( "UPDATE " . $table . " SET post_locations=%s, post_country=%s WHERE post_id=%d", array( $post_locations, $country_translated, $post_id ) );
    					$update_locations = $wpdb->query($sql);
    				}
    			}
    		}
    		$update_locations = true;
    	}
    
    	/* update in location seo table */
    	$update_location_seo = false;
    	$sql = $wpdb->prepare( "UPDATE " . LOCATION_SEO_TABLE . " SET country_slug=%s WHERE country_slug=%s", array( $country_slug_translated, $country_slug ) );
    	$update_location_seo = $wpdb->query($sql);
    
    	if( $update_locations || $update_listings || $update_location_seo ) {
    		return true;
    	}
    	return false;
    }