adding test round of header search filters for categories
authorAnthony Talarico <talarico@gaslightmedia.com>
Thu, 27 Apr 2017 13:54:24 +0000 (09:54 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Thu, 27 Apr 2017 13:54:24 +0000 (09:54 -0400)
added ajax and php search filtering using sql queries in the ajax search file and
the headSearch js file. this should filter the categories based on user selection

js/app.js
js/custom/headerSearch.js
lib/ajax-search.php

index c922d08..c336853 100644 (file)
--- a/js/app.js
+++ b/js/app.js
@@ -20,7 +20,7 @@ $(document).ready(function () {
     }
 
     
-    var activities   = page.find('#activities-search');
+    var activities   = page.find('#activity-search');
     var counties     = page.find('#county-search');
     var cities       = page.find('#city-search');
     var regions      = page.find('#region-search');
@@ -106,22 +106,23 @@ $(document).ready(function () {
     });
     
     // categories on change
-//    activities.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+    activities.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var activity = this.value;
+        if(activity === ''){
+            activity = 'false';
+        }
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                activity: activity,
+
+            },
+            success:function(data){
+               var activity_data = data;
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
@@ -133,8 +134,8 @@ $(document).ready(function () {
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
@@ -147,41 +148,49 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
-//    parks.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+
+
+                option = {};
+                parks.empty();
+                parks.append($('<option>', {value: '', text: 'Select a Park'}));
+                $.each(activity_data.categories.Parks, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    parks.append(option);
+                });
+                option = {};
+                destinations.empty();
+                destinations.append($('<option>', {value: 'default', text: 'Select a Destination'}));
+                $.each(activity_data.categories.Destinations, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    destinations.append(option);
+                });
+
+            }
+        });
+    });
+    parks.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var park = this.value;
+        if(park === ''){
+            park = 'false';
+        }
+
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                park: park,
+
+            },
+            success:function(data){
+               var park_data = data;
+                
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
-////                counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
+////               counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
 //                $.each(activity_data.counties,function(index,value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
@@ -189,8 +198,8 @@ $(document).ready(function () {
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
@@ -203,55 +212,61 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
-//    destinations.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+
+                option = {};
+                destinations.empty();
+                destinations.append($('<option>', {value: '', text: 'Select a Destination'}));
+                $.each(park_data.categories.Destinations, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    destinations.append(option);
+                });
+                
+                option = {};
+                activities.empty();
+                activities.append($('<option>', {value: '', text: 'Select an Activity'}));
+                $.each(park_data.categories.Activities, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    activities.append(option);
+                });
+            }
+        });
+    });
+    destinations.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var destination = this.value;
+        if(destination === ''){
+            destination = 'false';
+        }
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                destination: destination
+            },
+            success:function(data){
+               var destination_data = data;
+
+                
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
 ////                counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
-//                $.each(activity_data.counties,function(index,value){
+//                $.each(destination_data.counties,function(index,value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
 //                        option.attr('data-id', value.id);
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
 ////                cities.append($('<option>', {value: 'default', text: 'City', 'data-taxonomy': 'default'}));
-//                $.each(activity_data.cities, function(index, value){
+//                $.each(destination_data.categories.Activities, function(index, value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
 //                        option.attr('data-taxonomy', value.taxonomy);
@@ -259,21 +274,32 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
+
+
+                option = {};
+                activities.empty();
+                activities.append($('<option>', {value: '', text: 'Select an Activity'}));
+                $.each(destination_data.categories.Activities, function(index, value) {
+                    console.log(value);
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    option.attr('data-taxonomy', value.taxonomy);
+                    option.attr('data-id', value.id);
+                    activities.append(option);
+                });
+                
+                option = {};
+                parks.empty();
+                parks.append($('<option>', {value: '', text: 'Select a Park'}));
+                $.each(destination_data.categories.Parks, function(index, value) {
+                    console.log(value);
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    option.attr('data-taxonomy', value.taxonomy);
+                    option.attr('data-id', value.id);
+                    parks.append(option);
+                });
+            }
+        });
+    });
 });
 ;// Load foundation
 $(document).foundation();
index facac2e..9b5c243 100644 (file)
@@ -11,7 +11,7 @@ $(document).ready(function () {
     }
 
     
-    var activities   = page.find('#activities-search');
+    var activities   = page.find('#activity-search');
     var counties     = page.find('#county-search');
     var cities       = page.find('#city-search');
     var regions      = page.find('#region-search');
@@ -97,22 +97,23 @@ $(document).ready(function () {
     });
     
     // categories on change
-//    activities.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+    activities.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var activity = this.value;
+        if(activity === ''){
+            activity = 'false';
+        }
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                activity: activity,
+
+            },
+            success:function(data){
+               var activity_data = data;
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
@@ -124,8 +125,8 @@ $(document).ready(function () {
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
@@ -138,41 +139,49 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
-//    parks.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+
+
+                option = {};
+                parks.empty();
+                parks.append($('<option>', {value: '', text: 'Select a Park'}));
+                $.each(activity_data.categories.Parks, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    parks.append(option);
+                });
+                option = {};
+                destinations.empty();
+                destinations.append($('<option>', {value: 'default', text: 'Select a Destination'}));
+                $.each(activity_data.categories.Destinations, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    destinations.append(option);
+                });
+
+            }
+        });
+    });
+    parks.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var park = this.value;
+        if(park === ''){
+            park = 'false';
+        }
+
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                park: park,
+
+            },
+            success:function(data){
+               var park_data = data;
+                
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
-////                counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
+////               counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
 //                $.each(activity_data.counties,function(index,value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
@@ -180,8 +189,8 @@ $(document).ready(function () {
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
@@ -194,55 +203,61 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
-//    destinations.on('change', function(){
-//       $('option:selected', this).attr('selected', 'selected');
-//       var activity = this.value;
-//       var taxonomy = $('option:selected', this).attr('data-taxonomy');
-//        jQuery.ajax({
-//            type:"POST",
-//            dataType: 'json',
-//            url: ajaxurl,
-//            data: {
-//                action: "trailmaps",
-//                activity: activity,
-//                taxonomy: taxonomy
-//            },
-//            success:function(data){
-//               var activity_data = data;
-//
+
+                option = {};
+                destinations.empty();
+                destinations.append($('<option>', {value: '', text: 'Select a Destination'}));
+                $.each(park_data.categories.Destinations, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    destinations.append(option);
+                });
+                
+                option = {};
+                activities.empty();
+                activities.append($('<option>', {value: '', text: 'Select an Activity'}));
+                $.each(park_data.categories.Activities, function(index, value) {
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    activities.append(option);
+                });
+            }
+        });
+    });
+    destinations.on('change', function(){
+       $('option:selected', this).attr('selected', 'selected');
+       var destination = this.value;
+        if(destination === ''){
+            destination = 'false';
+        }
+        jQuery.ajax({
+            type:"POST",
+            dataType: 'json',
+            url: ajaxurl,
+            data: {
+                action: "trailmaps",
+                destination: destination
+            },
+            success:function(data){
+               var destination_data = data;
+
+                
 //                option = {};
 //                $('#trail-counties option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-counties option:selected').val();
 ////                counties.append($('<option>', {value: 'default', text: 'County', 'data-taxonomy': 'default'}));
-//                $.each(activity_data.counties,function(index,value){
+//                $.each(destination_data.counties,function(index,value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
 //                        option.attr('data-id', value.id);
 //                        counties.append(option);
 //                    }
 //                });
-//
-//
+
+
 //                option = {};
 //                $('#trail-cities option').not(':eq(0), :selected').remove();
 //                var selected = $('#trail-cities option:selected').val();
 ////                cities.append($('<option>', {value: 'default', text: 'City', 'data-taxonomy': 'default'}));
-//                $.each(activity_data.cities, function(index, value){
+//                $.each(destination_data.categories.Activities, function(index, value){
 //                    if(value.slug !== selected){
 //                        var option = $('<option>', {value: value.slug, text: value.name});
 //                        option.attr('data-taxonomy', value.taxonomy);
@@ -250,19 +265,30 @@ $(document).ready(function () {
 //                        cities.append(option);
 //                    }
 //                });
-//
-//                if( $('#trail-activities option:selected').val() === 'default'){
-//                    option = {};
-//                    activities.empty();
-//                    activities.append($('<option>', {value: 'default', text: 'Activity', 'data-taxonomy': 'default'}));
-//                    $.each(activity_data.activities, function(index, value) {
-//                        var option = $('<option>', {value: value.slug, text: value.name});
-//                        option.attr('data-taxonomy', value.taxonomy);
-//                        option.attr('data-id', value.id);
-//                        activities.append(option);
-//                    });
-//                }
-//            }
-//        });
-//    });
+
+
+                option = {};
+                activities.empty();
+                activities.append($('<option>', {value: '', text: 'Select an Activity'}));
+                $.each(destination_data.categories.Activities, function(index, value) {
+                    console.log(value);
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    option.attr('data-taxonomy', value.taxonomy);
+                    option.attr('data-id', value.id);
+                    activities.append(option);
+                });
+                
+                option = {};
+                parks.empty();
+                parks.append($('<option>', {value: '', text: 'Select a Park'}));
+                $.each(destination_data.categories.Parks, function(index, value) {
+                    console.log(value);
+                    var option = $('<option>', {value: value.category, text: value.name});
+                    option.attr('data-taxonomy', value.taxonomy);
+                    option.attr('data-id', value.id);
+                    parks.append(option);
+                });
+            }
+        });
+    });
 });
index bb7ee00..a3cab30 100644 (file)
@@ -89,7 +89,6 @@ var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
         global $wpdb;
         
         // on county dropdown change //////////////////////////////////////////
-         if( isset($_REQUEST['county'] ) || isset($_REQUEST['region'])){
              if( isset($_REQUEST['county'] ) ){
 
                 $county_id = isset($_REQUEST['county'] )? filter_var($_REQUEST['county'],FILTER_SANITIZE_STRING) : '';
@@ -164,82 +163,123 @@ var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
                 );
             }
 
-        } else {
-             if( isset($_REQUEST['activities'] ) ){
-
-                $activity_id = isset($_REQUEST['activities'] )? filter_var($_REQUEST['activities'],FILTER_SANITIZE_STRING) : '';
-
-                if($activitity_id !== 'false'){
-                    $where = "
-                    SELECT MI.city, T.name
-                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members M,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."cities T
-                     WHERE MI.status = 10
-                        AND T.id = MI.city AND MI.county = $county_id GROUP BY MI.city, T.name
-                "; 
-                }else {
-                    $where = "
-                    SELECT MI.city, T.name
-                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members M,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."cities T
-                     WHERE MI.status = 10
-                        AND M.id = MI.member AND T.id = MI.city GROUP BY MI.city, T.name
-                "; 
-                }
-
-
-                $results = $wpdb->get_results($where, ARRAY_A);
-                $cities = $results;
-
-                $trail_data = array(
-                    'cities'        => $cities,
-                    'test'          => $county_id
-                );
-
-            // on city dropdown change //////////////////////////////////////////
-            } else if( isset($_REQUEST['parks']) ){
-
-                $park_id = isset($_REQUEST['parks'] )? filter_var($_REQUEST['parks'],FILTER_SANITIZE_STRING) : '';
-
-                if($park_id !== 'false'){
-                    $where = "
-                    SELECT MI.city, T.name as city_name, MI.county, C.name as county_name
-                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members M,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."cities T,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."counties C
-                     WHERE MI.status = 10
-                        AND T.id = MI.city AND MI.region = $region_id AND C.id = MI.county GROUP BY MI.city, city_name, MI.county, county_name
-                "; 
-                }else {
-                    $where = "
-                    SELECT MI.city, T.name as city_name, MI.county, C.name as county_name
-                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members M,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."cities T,
-                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."counties C
-                     WHERE MI.status = 10
-                      AND M.id = MI.member AND T.id = MI.city AND C.id = MI.county GROUP BY MI.city, city_name, MI.county, county_name
-                "; 
-                }
+        
+         if( isset($_REQUEST['activity'] ) ){
+
+            $activity_id = isset($_REQUEST['activity'] )? filter_var($_REQUEST['activity'],FILTER_SANITIZE_STRING) : '';
+
+            if($activity_id !== 'false'){
+                $where = "
+                SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE CM.member_info IN (SELECT member_info FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info WHERE category = $activity_id)
+                 AND MI.status = 10 AND CM.category = CAT.id AND NOT CM.category = $activity_id 
+                 GROUP BY CM.category
+            "; 
+            }else {
+                $where = "
+                SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE MI.status = 10 AND CM.category = CAT.id 
+                 GROUP BY CM.category
+            "; 
+            }
 
 
-                $results = $wpdb->get_results($where, ARRAY_A);
+            $results = $wpdb->get_results($where, ARRAY_A);
+             foreach($results as $key=>$value){
+                 $parent = $value['parent'];
+                 $sql = "SELECT name FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories WHERE id = $parent;";
+                 $parent_name = $wpdb->get_var($sql);
+                 $categories[$parent_name][] = $value;
+             }
+
+            $trail_data = array(
+                'categories' => $categories
+            );
+
+        // on city dropdown change //////////////////////////////////////////
+        } else if( isset($_REQUEST['park']) ){
+
+            $park_id = isset($_REQUEST['park'] )? filter_var($_REQUEST['park'],FILTER_SANITIZE_STRING) : '';
+
+            if($park_id !== 'false'){
+                $where = "
+                SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE CM.member_info IN (SELECT member_info FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info WHERE category = $park_id)
+                 AND MI.status = 10 AND CM.category = CAT.id AND NOT CM.category = $park_id 
+                 GROUP BY CM.category
+            "; 
+            }else {
+                $where = "
+                SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE MI.status = 10 AND CM.category = CAT.id 
+                 GROUP BY CM.category
+            "; 
+            }
 
-                foreach($results as $result){
-                    $counties[$result['county']] = $result['county_name'];
-                    $cities[$result['city']]   = $result['city_name'];
-                }
 
-                $trail_data = array(
-                    'cities'        => $cities,
-                    'counties'      => $counties
-                );
+            $results = $wpdb->get_results($where, ARRAY_A);
+             foreach($results as $key=>$value){
+                 $parent = $value['parent'];
+                 $sql = "SELECT name FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories WHERE id = $parent;";
+                 $parent_name = $wpdb->get_var($sql);
+                 $categories[$parent_name][] = $value;
+             }
+
+            $trail_data = array(
+                'categories' => $categories
+            );
+        }else if( isset($_REQUEST['destination']) ){
+
+            $destination_id = isset($_REQUEST['destination'] )? filter_var($_REQUEST['destination'],FILTER_SANITIZE_STRING) : '';
+             
+            if($destination_id !== 'false'){
+
+                $where = "
+                SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE CM.member_info IN (SELECT member_info FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info WHERE category = $destination_id)
+                 AND MI.status = 10 AND CM.category = CAT.id AND NOT CM.category = $destination_id 
+                 GROUP BY CM.category
+            "; 
+            }else {
+                $where = "
+                 SELECT CM.category, CAT.name, CAT.parent
+                  FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info MI,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info CM,
+                       ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories CAT
+                 WHERE MI.status = 10 AND CM.category = CAT.id 
+                 GROUP BY CM.category
+            "; 
             }
+
+            $results = $wpdb->get_results($where, ARRAY_A);
+             foreach($results as $key=>$value){
+                 $parent = $value['parent'];
+                 $sql = "SELECT name FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories WHERE id = $parent;";
+                 $parent_name = $wpdb->get_var($sql);
+                 $categories[$parent_name][] = $value;
+             }
+
+            $trail_data = array(
+                'categories' => $categories
+            );
         }
 
+
         echo json_encode($trail_data);
         wp_die();
     }