Updates on the trail search
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 23 Jul 2013 14:33:15 +0000 (14:33 +0000)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 23 Jul 2013 14:33:15 +0000 (14:33 +0000)
The Parks select is now linked to activitities. When you change the
activity it will update the parks.
The amenities part is passing through the activityId, parkId, regionId,
and countyId as hidden fields (for a filter).

Toolkit/Members/UserSearchForm.php
Toolkit/Members/formAjax.php
Toolkit/Members/templates/userSearchForm.html

index 0af0d37..501b7d6 100644 (file)
@@ -386,10 +386,6 @@ class Toolkit_Members_UserSearchForm
                        foreach ($this->memberCatsAssignedToPage as $id) {
                 $isAccommodationCategory->bindParam(':cid', $id, PDO::PARAM_INT);
                 $isAccommodationCategory->execute();
-//                if (!$isAccommodationCategory->fetchColumn()) {
-//                    continue;
-//                }
-//                             $stmt->bindParam(':cid', $id, PDO::PARAM_INT);
                                $stmt->execute();
                                while ($row = $stmt->fetch()) {
                                        $amenities[$row['amenity_name']] = $row['amenity_id'];
@@ -571,10 +567,8 @@ class Toolkit_Members_UserSearchForm
        ) {
                $GLOBALS['styleSheets'][]
             = BASE_URL . 'Toolkit/Members/css/member.css';
-        $GLOBALS['styleSheets'][]   = JQUERY_UI_CDN_CSS;
-        $GLOBALS['topScripts'][]    = JQUERY_UI_CDN_JS;
-//        $GLOBALS['bottomScripts'][]
-//            = BASE_URL . 'Toolkit/Members/libjs/userSearchForm.js';
+        $GLOBALS['styleSheets'][] = JQUERY_UI_CDN_CSS;
+        $GLOBALS['topScripts'][]  = JQUERY_UI_CDN_JS;
         $tpl = new HTML_Template_Flexy($flexyOpts);
         $tpl->compile($this->formTemplate);
 
@@ -582,11 +576,10 @@ class Toolkit_Members_UserSearchForm
         $amenities = $this->getMemberAmenities($this->dbh);
         $parks     = $this->getParks();
         $regions   = $this->getAvailableRegions($this->dbh);
-//        $regions   = $this->memberRegionsAssignedToPage;
         $counties  = $this->getCounties();
 
-        $page             = new stdClass();
-        $page->formURL    = BASE_URL . 'index.php?catid=' . $this->_catid;
+        $page          = new stdClass();
+        $page->formURL = BASE_URL . 'index.php?catid=' . $this->_catid;
         $page->activities
             = (!empty($activity) && count($activity) > 1)
             ? $activity
index 12babaa..63fd987 100644 (file)
@@ -1,14 +1,55 @@
 <?php
 require_once '../../setup.phtml';
+define('PARENT_CATEGORY_ACTIVITIES', 7);
+define('PARENT_CATEGORY_PARKS', 8);
 
 $activityId = filter_var($_REQUEST['activityId'], FILTER_VALIDATE_INT);
 $parkId     = filter_var($_REQUEST['parkId'], FILTER_VALIDATE_INT);
 $regionId   = filter_var($_REQUEST['regionId'], FILTER_VALIDATE_INT);
 $countyId   = filter_var($_REQUEST['countyId'], FILTER_VALIDATE_INT);
+
 try {
     $dbh = Toolkit_Database::getInstance();
 
     if ($activityId) {
+        $sql = "
+          SELECT category_id,name
+            FROM members.category
+           WHERE category_id IN (
+                 SELECT category_id
+                   FROM members.member_category
+                  WHERE member_id IN (
+                        SELECT member_id
+                          FROM members.member_category
+                         WHERE category_id = :category))
+             AND parent_id = " . PARENT_CATEGORY_PARKS . "
+        ORDER BY name";
+        $stmt = $dbh->prepare($sql);
+        $stmt->bindParam(':category', $activityId, PDO::PARAM_INT);
+        $stmt->execute();
+        echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
+    }
+    if (isset($_REQUEST['activityId']) && !$activityId) {
+        $sql = "
+          SELECT category_id,name
+            FROM members.category
+           WHERE category_id IN (
+                 SELECT category_id
+                   FROM members.member_category
+                  WHERE member_id IN (
+                        SELECT member_id
+                          FROM members.member_category
+                         WHERE category_id IN (
+                               SELECT category_id
+                                 FROM members.category
+                                WHERE parent_id = " . PARENT_CATEGORY_ACTIVITIES . ")))
+             AND parent_id = " . PARENT_CATEGORY_PARKS . "
+        ORDER BY name";
+        $stmt = $dbh->prepare($sql);
+        $stmt->execute();
+        echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
+    }
+    if ($regionId) {
         $sql = "
           SELECT *
             FROM members.county
@@ -17,11 +58,7 @@ try {
                  SELECT region
                    FROM members.member
                   WHERE active = true
-                    AND member_id IN (
-                        SELECT member_id
-                          FROM members.member_category
-                         WHERE 
-                        )
+                    AND region = :region
                  )
         ORDER BY county_name";
         $stmt = $dbh->prepare($sql);
@@ -29,24 +66,21 @@ try {
         $stmt->execute();
         echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
     }
-    if ($regionId) {
+    if (isset($_REQUEST['regionId']) && !$regionId) {
         $sql = "
           SELECT *
             FROM members.county
-           WHERE region_id = :region
-             AND region_id IN (
+           WHERE region_id IN (
                  SELECT region
                    FROM members.member
                   WHERE active = true
-                    AND region = :region
                  )
         ORDER BY county_name";
         $stmt = $dbh->prepare($sql);
-        $stmt->bindParam(':region', $regionId, PDO::PARAM_INT);
         $stmt->execute();
         echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
     }
 
 } catch(PDOException $e) {
-
+    Toolkit_Common::handleError($e);
 }
index 46505fc..15671f4 100644 (file)
                 value="Search">
             </div>
         </div>
+    </form>
+    <form
+        flexy:ignore="yes"
+        action="{formURL:h}"
+        id="trail-form-am"
+        method="post">
+        <input type="hidden" name="search" value="1">
+        <?php
+        if ($activity = filter_var($_REQUEST['activityId'], FILTER_VALIDATE_INT)) {
+            echo '<input type="hidden" name="activityId" value="'.$activity.'">';
+        }
+        if ($park = filter_var($_REQUEST['parkId'], FILTER_VALIDATE_INT)) {
+            echo '<input type="hidden" name="parkId" value="'.$park.'">';
+        }
+        if ($region = filter_var($_REQUEST['regionId'], FILTER_VALIDATE_INT)) {
+            echo '<input type="hidden" name="regionId" value="'.$region.'">';
+        }
+        if ($county = filter_var($_REQUEST['countyId'], FILTER_VALIDATE_INT)) {
+            echo '<input type="hidden" name="countyId" value="'.$county.'">';
+        }
+        ?>
         <div id="lowerbox">
                 <div>Filter Results:</div>
                 <div flexy:if="parks" class="fieldcontain">
         if ($("#advSearchRegions").val()) {
             updateCountySelect();
         }
+        $("#advSearchActivities").change(function(){
+            updateParksSelect();
+        });
+        if ($("#advSearchActivities").val()) {
+            updateParksSelect();
+        }
     });
+    function updateParksSelect() {
+        $.ajax({
+            dataType: 'json',
+            url: 'ajax/form.json',
+            data: {'activityId': $("#advSearchActivities").val()},
+            success: function(data) {
+                var currentVal = $("#advSearchParks").val();
+                $("#advSearchParks").html('<option value="">Parks</option>');
+                $.each(data, function(index, park) {
+                    //console.log(park);
+                    var sel
+                        = (currentVal == park.category_id)
+                        ? ' selected'
+                        : '';
+                    $("#advSearchParks").append('<option value="' + park.category_id
+                            + '" '+sel+'>'
+                            + park.name + '</option>');
+                    //console.log('park: ' + park.name);
+                });
+            }
+        });
+    }
     function updateCountySelect() {
         $.ajax({
             dataType: 'json',