Function Reference: geodir_set_location_var_in_session
Summary
Set location data in session.
Global Values
- $wpdb
- (object) (required) WordPress Database object.
- Default: None
Package
GeoDirectory_Location_Manager
Parameters
- $wp
- (object) (required) WordPress object.
- Default: None
Change Log
Since: 1.0.0
Source File
geodir_set_location_var_in_session() is located in geodir_location_manager/geodir_location_hooks_actions.php [Line: 803]
Source Code
function geodir_set_location_var_in_session($wp) { //unset($_SESSION['gd_location_shared']); /*$point1=array('latitude'=>'-22.5260060699' ,'longitude'=> '-43.7334400235' ) ; $point1=array('latitude'=>'28.635308' ,'longitude'=> '77.22496' ) ; $point2=array('latitude'=>'-22.7024218' ,'longitude'=> '-43.33662349999997' ) ; $point2=array('latitude'=>'-22.7356363' ,'longitude'=> '-43.44001100000003' ) ; echo geodir_calculateDistanceFromLatLong($point1, $point2); */ // Avoide all the changes made by core, restore original queryvars ; // $wp->query_vars=$wp->geodir_query_vars ; // this code will determine when a user wants to switch location // A location can be switched using 3 ways //1. usign location switcher, in this case the url will always have location prefix // Query Vars will have page_id parameter // check if query var has page_id and that page id is location page //print_r($_SESSION); // my location set start //Fix for WPML removing page_id query var: if(isset($wp->query_vars['page']) && !isset($wp->query_vars['page_id']) && isset($wp->query_vars['pagename']) && !is_home()){ global $wpdb; $page_for_posts = get_option('page_for_posts'); $real_page_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_name=%s",$wp->query_vars['pagename'])); if(function_exists('icl_object_id')){ $real_page_id = icl_object_id($real_page_id, 'page', true, ICL_LANGUAGE_CODE); } if($real_page_id && $real_page_id!=$page_for_posts){ $wp->query_vars['page_id'] = $real_page_id; } } if((isset($wp->query_vars['gd_country']) && $wp->query_vars['gd_country'] == 'me' && isset($_SESSION['user_lat']) && $_SESSION['user_lat'] && isset($_SESSION['user_lon']) && $_SESSION['user_lon']) || (isset($_SESSION['all_near_me']) && is_admin()) ){ if(isset($_REQUEST['user_lat']) && $_REQUEST['user_lat']){$_SESSION['user_lat']=$_REQUEST['user_lat'];} if(isset($_REQUEST['user_lon']) && $_REQUEST['user_lon']){$_SESSION['user_lon']=$_REQUEST['user_lon'];} if(isset($_SESSION['near_me_range']) && $_SESSION['near_me_range']){$_REQUEST['sdist']=$_SESSION['near_me_range'];} $_SESSION['all_near_me']=1; $_REQUEST['sgeo_lat'] = $_SESSION['user_lat']; $_REQUEST['sgeo_lon'] = $_SESSION['user_lon']; $_REQUEST['snear'] = 1; $_SESSION['gd_multi_location'] = 0; //unset any locations unset($_SESSION['gd_city'],$_SESSION['gd_region'],$_SESSION['gd_country'] ); return; } elseif(isset($wp->query_vars['gd_country']) && $wp->query_vars['gd_country'] == 'me'){ // at the near me page but with no location add_action('wp_head','geodir_set_user_location_near_me'); return; }else{ if(isset($_SESSION['all_near_me'])){unset($_SESSION['all_near_me']);} } // my location set end geodir_set_is_geodir_page($wp) ; if(!get_option('geodir_set_as_home')) { if ( empty($wp->query_vars) || !array_diff( array_keys($wp->query_vars), array('preview', 'page', 'paged', 'cpage') ) ) { if( 'page' == get_option('show_on_front')) $wp->query_vars['page_id'] = get_option('page_on_front'); } } if(isset($wp->query_vars['page_id']) && $wp->query_vars['page_id'] == geodir_location_page_id() || (isset($_REQUEST['set_location_type']) && $_REQUEST['set_location_type'] && isset($_REQUEST['set_location_val']) && $_REQUEST['set_location_val'])) { $gd_country = '' ; $gd_region = '' ; $gd_city = '' ; if(isset($wp->query_vars['gd_country']) && $wp->query_vars['gd_country'] != '') $gd_country =urldecode($wp->query_vars['gd_country']) ; if(isset($wp->query_vars['gd_region']) && $wp->query_vars['gd_region'] != '') $gd_region =urldecode($wp->query_vars['gd_region']) ; if(isset($wp->query_vars['gd_city']) && $wp->query_vars['gd_city'] != '') $gd_city =urldecode($wp->query_vars['gd_city']) ; if(!($gd_country=='' && $gd_region == '' && $gd_city == '' )) { $default_location = geodir_get_default_location(); if( get_option('geodir_add_location_url')) { if(get_option('geodir_show_location_url')!='all') { /* * @todo i don't see the point in this code so i am removing it. (stiofan) */ /* if($gd_region=='' ) { if(isset($_SESSION['gd_region'])) $gd_region = $_SESSION['gd_region']; else $gd_region =$default_location->region_slug; } if($gd_city=='' ) { if(isset($_SESSION['gd_city'])) $gd_city = $_SESSION['gd_city']; else $gd_city =$default_location->city_slug; $base_location_link = geodir_get_location_link('base') ; wp_redirect($base_location_link . '/' .$gd_country . '/' . $gd_region . '/' . $gd_city ) ; exit(); }*/ } } $args = array( 'what'=> 'city' , 'city_val' => $gd_city, 'region_val' => $gd_region, 'country_val' => $gd_country, 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'' ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array)) { $_SESSION['gd_multi_location']=1 ; $_SESSION['gd_country'] = $gd_country ; $_SESSION['gd_region'] = $gd_region ; $_SESSION['gd_city'] = $gd_city ; $wp->query_vars['gd_country'] = $gd_country ; $wp->query_vars['gd_region'] = $gd_region; $wp->query_vars['gd_city'] = $gd_city ; } else { unset( $_SESSION['gd_multi_location'], $_SESSION['gd_city'], $_SESSION['gd_region'], $_SESSION['gd_country'] ); } } else { unset( $_SESSION['gd_multi_location'], $_SESSION['gd_city'], $_SESSION['gd_region'], $_SESSION['gd_country'] ); } } else if(isset($wp->query_vars['post_type']) && $wp->query_vars['post_type']!= '') { if(!is_admin()) { $requested_post_type = $wp->query_vars['post_type'] ; // check if this post type is geodirectory post types $post_type_array = geodir_get_posttypes() ; if(in_array($requested_post_type , $post_type_array)) { // now u can apply geodirectory related manipulation. //echo "good: it is geodirectory post type
" ; //print_r($wp->query_vars) ; } } } else { // check if a geodirectory taxonomy is set $gd_country = '' ; $gd_region = '' ; $gd_city = '' ; $is_geodir_taxonomy = false; $is_geodir_taxonomy_term = false ; // the last term is real geodirectory taxonomy term or not $is_geodir_location_found = false ; $geodir_taxonomy = '' ; $geodir_post_type = '' ; $geodir_term = ''; $geodir_set_location_session = true; $geodir_taxonomis = geodir_get_taxonomies('',true ); foreach($geodir_taxonomis as $taxonomy) { if(array_key_exists($taxonomy ,$wp->query_vars )) { $is_geodir_taxonomy = true ; $geodir_taxonomy =$taxonomy ; $geodir_post_type = str_replace('category' , '' , $taxonomy); $geodir_post_type = str_replace('_tags' , '' , $geodir_post_type); $geodir_term = $wp->query_vars[$geodir_taxonomy] ; break ; } } // now get an array of all terms seperated by '/' $geodir_terms = explode('/' , $geodir_term); $geodir_last_term = end($geodir_terms); if($is_geodir_taxonomy) // do all these only when it is a geodirectory taxonomy { $wp->query_vars['post_type'] = $geodir_post_type ; // now check if last term is a post of geodirectory post types $geodir_post = get_posts(array( 'name' => $geodir_last_term , 'posts_per_page' => 1, 'post_type' => $geodir_post_type, )); if(empty($geodir_post)) { $geodir_post = get_posts(array( 'name' => $geodir_last_term , 'posts_per_page' => 1, 'post_type' => $geodir_post_type, 'post_status'=>'draft', 'suppress_filters'=>false, )); } if(!empty($geodir_post) ) { if($geodir_post[0]->post_status != 'publish') { foreach($wp->query_vars as $key => $vars) { unset($wp->query_vars[$key]); } $wp->query_vars['error'] = '404' ; // set it as 404 if post exists but its status is not published yet } else { //$wp->query_vars[$geodir_taxonomy] = str_replace( '/'.$geodir_last_term , '' , $geodir_term); $wp->query_vars[$geodir_post_type] = $geodir_last_term; $wp->query_vars['name'] = $geodir_last_term; } $geodir_term = str_replace('/' . $geodir_last_term , '' , $geodir_term,$post_title_replace_count); if(!$post_title_replace_count) $geodir_term = str_replace( $geodir_last_term , '' , $geodir_term,$post_title_replace_count); $geodir_terms = explode('/' , $geodir_term); $geodir_last_term = end($geodir_terms); $geodir_set_location_session =false; //return ; } $geodir_location_terms = ''; // if last term is not a post then check if last term is a term of the specific texonomy or not if(geodir_term_exists($geodir_last_term, $geodir_taxonomy )) { $is_geodir_taxonomy_term = true ; $geodir_set_location_session =false; } // now check if there is location parts in the url or not if( get_option('geodir_add_location_url')) { if(get_option('geodir_show_location_url')=='all') { if(count($geodir_terms) >=3) { $gd_country= urldecode($geodir_terms[0]); $gd_region = urldecode($geodir_terms[1]) ; $gd_city = urldecode($geodir_terms[2]) ; } else if(count($geodir_terms) >=2) { $gd_country= urldecode($geodir_terms[0]); $gd_region = urldecode($geodir_terms[1]) ; } else if(count($geodir_terms) >=1) { $gd_country= urldecode($geodir_terms[0]); } $args = array( 'what'=> 'city' , 'city_val' => $gd_city, 'region_val' => $gd_region, 'country_val' => $gd_country, 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array) ) $is_geodir_location_found = true ; // if location has not been found for country , region and city then search for country and region only if(!$is_geodir_location_found ) { $gd_city=''; $args = array( 'what'=> 'city' , 'city_val' => $gd_city, 'region_val' => $gd_region, 'country_val' => $gd_country, 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array)) $is_geodir_location_found = true ; } // if location has not been found for country , region then search for country only if(!$is_geodir_location_found ) { $gd_city=''; $gd_region=''; $args = array( 'what'=> 'city' , 'city_val' => $gd_city, 'region_val' => $gd_region, 'country_val' => $gd_country, 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array) ) $is_geodir_location_found = true ; } } else { $gd_city= urldecode($geodir_terms[0]); $args = array( 'what'=> 'city' , 'city_val' => $gd_city, 'region_val' => $gd_region, 'country_val' => $gd_country, 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array) ) $is_geodir_location_found = true ; $args = array( 'what'=> 'region_slug' , 'city_val' => $gd_city, 'region_val' => '', 'country_val' => '', 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array) ) { $gd_region=$location_array[0]->region_slug; } $args = array( 'what'=> 'country_slug' , 'city_val' => $gd_city, 'region_val' => '', 'country_val' => '', 'country_column_name' => 'country_slug' , 'region_column_name' => 'region_slug' , 'city_column_name' => 'city_slug' , 'location_link_part' => false, 'compare_operator' =>'', 'format'=> array('type'=>'array') ); $location_array= geodir_get_location_array($args) ; if(!empty($location_array) ) { $gd_country=$location_array[0]->country_slug; } } // if locaton still not found then clear location related session variables if($is_geodir_location_found && $geodir_set_location_session ) { $_SESSION['gd_multi_location']=1 ; $_SESSION['gd_country'] = $gd_country ; $_SESSION['gd_region'] = $gd_region ; $_SESSION['gd_city'] = $gd_city ; } if(get_option('geodir_show_location_url')!='all') { $gd_country='' ; $gd_region=''; } if($is_geodir_location_found) { $wp->query_vars['gd_country'] = $gd_country ; $wp->query_vars['gd_region'] = $gd_region; $wp->query_vars['gd_city'] = $gd_city; } else { $gd_country='' ; $gd_region=''; $gd_city=''; } } $wp->query_vars[$geodir_taxonomy] = $geodir_term ; // eliminate location related terms from taxonomy term if($gd_country !='') $wp->query_vars[$geodir_taxonomy] = preg_replace( '/' .urlencode($gd_country) .'/', '' , $wp->query_vars[$geodir_taxonomy],1) ; if($gd_region !='') $wp->query_vars[$geodir_taxonomy] = preg_replace('/' . urlencode($gd_region).'/' , '' , $wp->query_vars[$geodir_taxonomy],1) ; if($gd_city !='') $wp->query_vars[$geodir_taxonomy] = preg_replace( '/' .urlencode($gd_city) .'/' , '' , $wp->query_vars[$geodir_taxonomy],1) ; $wp->query_vars[$geodir_taxonomy] = str_replace( '///' , '' , $wp->query_vars[$geodir_taxonomy]) ; $wp->query_vars[$geodir_taxonomy] = str_replace( '//' , '' , $wp->query_vars[$geodir_taxonomy]) ; $wp->query_vars[$geodir_taxonomy] = trim($wp->query_vars[$geodir_taxonomy], '/'); if($wp->query_vars[$geodir_taxonomy] == '' ) { unset($wp->query_vars[$geodir_taxonomy]) ; } else { if(!$is_geodir_taxonomy_term) { foreach($wp->query_vars as $key => $vars) { unset($wp->query_vars[$key]); } $wp->query_vars['error'] = '404' ; } } } } if(isset($wp->query_vars['gd_is_geodir_page']) && is_array($wp->query_vars) && count($wp->query_vars)=='1' ) { if(!isset($_SESSION['gd_location_filter_on_site_load'])) { $_SESSION['gd_location_filter_on_site_load']=1 ; if(get_option('geodir_result_by_location')=='default') { $location_default = geodir_get_default_location(); $_SESSION['gd_multi_location'] = 1 ; $_SESSION['gd_country'] = isset($location_default->country_slug) ? $location_default->country_slug : ''; $_SESSION['gd_region'] = isset($location_default->region_slug) ? $location_default->region_slug : ''; $_SESSION['gd_city'] = isset($location_default->city_slug) ? $location_default->city_slug : ''; $wp->query_vars['gd_country'] = isset($location_default->country_slug) ? $location_default->country_slug : '' ; $wp->query_vars['gd_region'] = isset($location_default->region_slug) ? $location_default->region_slug : ''; $wp->query_vars['gd_city'] = isset($location_default->city_slug) ? $location_default->city_slug : ''; } } } else { $_SESSION['gd_location_filter_on_site_load']=1 ; } if(isset($_SESSION['gd_multi_location']) && $_SESSION['gd_multi_location']==1) { $wp->query_vars['gd_country'] = $_SESSION['gd_country'] ; $wp->query_vars['gd_region'] = $_SESSION['gd_region'] ; $wp->query_vars['gd_city'] = $_SESSION['gd_city'] ; }/**/ // now check if there is location parts in the url or not if( get_option('geodir_add_location_url')) { if(get_option('geodir_show_location_url')!='all') { if(isset($wp->query_vars['gd_country'])) $wp->query_vars['gd_country']='' ; if(isset($wp->query_vars['gd_region'])) $wp->query_vars['gd_region']='' ; } } else { if(isset($wp->query_vars['gd_country'])) $wp->query_vars['gd_country']='' ; if(isset($wp->query_vars['gd_region'])) $wp->query_vars['gd_region']='' ; if(isset($wp->query_vars['gd_city'])) $wp->query_vars['gd_city']='' ; } /**/ //print_r($_SESSION); /* echo "" ; print_r($wp) ; echo "" ;
exit();
*/
}