Function Reference: geodir_add_location
Summary
Handles ‘add location’ form data.
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_add_location() is located in geodir_location_manager/geodir_location_functions.php [Line: 1111]
Source Code
function geodir_add_location()
{
global $wpdb,$plugin_prefix;
if(isset($_REQUEST['location_addedit_nonce']) && current_user_can( 'manage_options' )){
if ( !wp_verify_nonce( $_REQUEST['location_addedit_nonce'], 'location_add_edit_nonce' ) )
return;
$gd_city = $_REQUEST['gd_city'];
$gd_region = $_REQUEST['gd_region'];
$gd_country = $_REQUEST['gd_country'];
$gd_latitude = $_REQUEST['gd_latitude'];
$gd_longitude = $_REQUEST['gd_longitude'];
$city_meta = $_REQUEST['city_meta'];
$city_desc = $_REQUEST['city_desc'];
$id = $_REQUEST['update_city'];
if($id)
{
$duplicate = $wpdb->get_var(
$wpdb->prepare(
"select location_id from ".POST_LOCATION_TABLE." WHERE city = %s AND region=%s AND country=%s AND location_id!=%d",
array($gd_city,$gd_region,$gd_country,$id)
)
);
}
else
{
$duplicate = $wpdb->get_var(
$wpdb->prepare(
"select location_id from ".POST_LOCATION_TABLE." WHERE city = %s AND region=%s AND country=%s",
array($gd_city,$gd_region,$gd_country)
)
);
}
if($duplicate!='')
{
$setid = '';
if($id){ $setid = '&id='.$id; }
$msg = GD_LOCATION_EXITS;
$msg = urlencode($msg);
$location = admin_url()."admin.php?page=geodirectory&tab=managelocation_fields&subtab=geodir_location_addedit&location_error=".$msg.$setid;
wp_redirect($location);
exit;
}
if($_POST['location_ajax_action'] == 'location')
{
$country_slug = create_location_slug($gd_country);
$region_slug = create_location_slug($gd_region);
$city_slug = create_location_slug($gd_city);
if($id)
{
$old_location = geodir_get_location_by_id('' , $id);
$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,
city_meta=%s,
city_desc=%s WHERE location_id = %d",
array($gd_country,$gd_region,$gd_city,$gd_latitude,$gd_longitude,$country_slug,$region_slug,$city_slug,$city_meta,$city_desc,$id)
);
$wpdb->query($sql);
$geodir_location = $wpdb->get_row($wpdb->prepare("SELECT * FROM ".POST_LOCATION_TABLE." WHERE is_default='1' AND location_id = %d",array($id)), "OBJECT" );
if(!empty($geodir_location))
update_option('geodir_default_location', $geodir_location); // UPDATE DEFAULT LOCATION OPTION
$msg = GD_LOCATION_UPDATED;
//UPDATE AND DELETE LISTING
$posttype = geodir_get_posttypes();
if (isset($_REQUEST['listing_action']) && $_REQUEST['listing_action'] == 'delete') {
foreach ($posttype as $posttypeobj) {
/* do not update latitude and longitude otrherwise all listings will be spotted on one point on map
if ($old_location->city_latitude != $gd_latitude || $old_location->city_longitude != $gd_longitude) {
$del_post_sql = $wpdb->get_results(
$wpdb->prepare(
"SELECT post_id from ".$plugin_prefix.$posttypeobj."_detail WHERE post_location_id = %d AND (post_city != %s OR post_region != %s)",
array($id,$gd_city,$gd_region)
)
);
if (!empty($del_post_sql)) {
foreach ($del_post_sql as $del_post_info) {
$postid = (int)$del_post_info->post_id;
//wp_delete_post($postid); // update post location instead of delete post
$sql = $wpdb->prepare(
"UPDATE ".$plugin_prefix.$posttypeobj."_detail SET post_latitude=%s, post_longitude=%s WHERE post_location_id=%d AND post_id=%d",
array( $gd_latitude, $gd_longitude, $id, $postid )
);
$wpdb->query($sql);
}
}
}
*/
$post_locations = '['.$city_slug.'],['.$region_slug.'],['.$country_slug.']'; // set all overall post location
$sql = $wpdb->prepare(
"UPDATE ".$plugin_prefix.$posttypeobj."_detail SET post_city=%s, post_region=%s, post_country=%s, post_locations=%s
WHERE post_location_id=%d AND ( post_city!=%s OR post_region!=%s OR post_country!=%s)",
array($gd_city,$gd_region,$gd_country,$post_locations,$id,$gd_city,$gd_region,$gd_country)
);
$wpdb->query($sql);
}
}
}
else
{
$location_info = array();
$location_info['city'] = $gd_city;
$location_info['region'] = $gd_region;
$location_info['country'] = $gd_country;
$location_info['country_slug'] = $country_slug;
$location_info['region_slug'] = $region_slug;
$location_info['city_slug'] = $city_slug;
$location_info['city_latitude'] = $gd_latitude;
$location_info['city_longitude'] = $gd_longitude;
$location_info['is_default'] = 0;
$location_info['city_meta'] = $city_meta;
$location_info['city_desc'] = $city_desc;
geodir_add_new_location_via_adon($location_info);
$msg = GD_LOCATION_SAVED;
}
$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();
}
}