From: Steve Sutton Date: Mon, 28 Jul 2014 19:45:25 +0000 (-0400) Subject: Update search X-Git-Tag: v1.1^2~1 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=aef26384089cfc7e6e9454acfe321d3fbd1a0174;p=web%2FMichiganTrailMaps.git Update search setup filters so they are tied in to the results --- diff --git a/Toolkit/Members/SearchList.php b/Toolkit/Members/SearchList.php index c23c6b8..df25a6e 100644 --- a/Toolkit/Members/SearchList.php +++ b/Toolkit/Members/SearchList.php @@ -684,6 +684,7 @@ class Toolkit_Members_SearchList extends Toolkit_FlexyDataGridBuilder true ); $res = $form->setCatId($_GET['catid']); + $form->setMemberIds($this->sql); if (PEAR::isError($res)) { return Toolkit_Common::handleError($res); diff --git a/Toolkit/Members/UserSearchForm.php b/Toolkit/Members/UserSearchForm.php index a5a314b..e20388e 100644 --- a/Toolkit/Members/UserSearchForm.php +++ b/Toolkit/Members/UserSearchForm.php @@ -112,6 +112,7 @@ class Toolkit_Members_UserSearchForm * @var PDO */ protected $dbh; + protected $memberIds = array(); const PARENT_CATEGORY_ACTIVITIES = 7; const PARENT_CATEGORY_PARKS = 8; @@ -124,6 +125,19 @@ class Toolkit_Members_UserSearchForm $this->dbh = Toolkit_Database::getInstance(); } + /** + * Sql from generator + * + * @param string $sql Main sql from the generator + */ + public function setMemberIds($sql) + { + $stmt = $this->dbh->query($sql); + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $this->memberIds[] = $row['member_id']; + } + } + // {{{ configureFilters() /** @@ -360,16 +374,19 @@ class Toolkit_Members_UserSearchForm // {{{ getMemberAmenities() /** - * Get all the amenities for the member + * Get all the amenities for members * * @param PDO $dbh Database handler * * @return array member amenities * @access protected */ - protected function getMemberAmenities(PDO $dbh) + protected function getMemberAmenities(PDO $dbh, $memberIds = null) { try { + $memIds = ($memberIds) + ? " AND member_id IN (".implode(',', $memberIds).")" + : ''; $amenities = array(); $sql = " SELECT accommodations @@ -385,6 +402,7 @@ class Toolkit_Members_UserSearchForm WHERE m.new_member <> CAST(1 AS BOOLEAN) AND m.active = CAST(1 AS BOOLEAN) AND a.display_form = CAST(1 AS BOOLEAN) + $memIds ORDER BY amenity_name"; $stmt = $dbh->prepare($sql); @@ -577,43 +595,54 @@ class Toolkit_Members_UserSearchForm $tpl = new HTML_Template_Flexy($flexyOpts); $tpl->compile($this->formTemplate); - $activity = $this->getActivities(); - $amenities = $this->getMemberAmenities($this->dbh); - $parks = $this->getParks(); - $destinations = $this->getDestinations(); - $regions = $this->getAvailableRegions($this->dbh); - $counties = $this->getCounties(); - $cities = $this->getCities(); + $search = filter_var($_REQUEST['search'], FILTER_VALIDATE_BOOLEAN); $page = new stdClass(); + $page->search = $search; $page->formURL = BASE_URL . 'index.php?_qf__SearchForm=&catid=' . $this->_catid . '&search=1'; + + $activity = $this->getActivities(); $page->activities = (!empty($activity) && count($activity) > 1) ? $activity : null; + $page->filterActivities + = ($search) + ? $this->getActivities($this->memberIds) + : ''; + $parks = $this->getParks(); $page->parks = (!empty($parks) && count($parks) > 1) ? $parks : null; + $page->filterParks + = ($search) + ? $this->getParks($this->memberIds) + : ''; + $destinations = $this->getDestinations(); $page->destinations = (!empty($destinations) && count($destinations) > 1) ? $destinations : null; + $regions = $this->getAvailableRegions($this->dbh); $page->regions = (!empty($regions) && count($regions) >= 1) ? $regions : null; + $counties = $this->getCounties(); $page->counties = (!empty($counties) && count($counties) > 1) ? $counties : null; + $cities = $this->getCities(); $page->cities = (!empty($cities) && count($cities) > 1) ? $cities : null; + $amenities = $this->getMemberAmenities($this->dbh, $this->memberIds); $page->amenities = $amenities; return $tpl->bufferedOutputObject($page); @@ -621,7 +650,7 @@ class Toolkit_Members_UserSearchForm // }}} - protected function getActivities() + protected function getActivities($memberIds = null) { $activities = array(); try { @@ -631,12 +660,19 @@ class Toolkit_Members_UserSearchForm .implode(',', $this->memberCatsAssignedToPage).") OR parent_id IN (".implode(',', $this->memberCatsAssignedToPage)."))" : ''; + $memIds = ($memberIds) + ? " AND " + . "(category_id IN " + . "(SELECT category_id " + . "FROM member_category " + . "WHERE member_id IN (".implode(',', $memberIds).")))" + : ''; $sql = " SELECT * FROM category WHERE parent_id = " . self::PARENT_CATEGORY_ACTIVITIES - . $cats + . $cats . $memIds . " AND category_id IN ( SELECT category_id FROM member_category)" @@ -651,7 +687,7 @@ class Toolkit_Members_UserSearchForm return $activities; } - protected function getParks() + protected function getParks($memberIds = null) { $parks = array(); try { @@ -661,12 +697,19 @@ class Toolkit_Members_UserSearchForm .implode(',', $this->memberCatsAssignedToPage).") OR parent_id IN (".implode(',', $this->memberCatsAssignedToPage)."))" : ''; + $memIds = ($memberIds) + ? " AND " + . "(category_id IN " + . "(SELECT category_id " + . "FROM member_category " + . "WHERE member_id IN (".implode(',', $memberIds).")))" + : ''; $sql = " SELECT * FROM category WHERE parent_id = " . self::PARENT_CATEGORY_PARKS - . $cats + . $cats .$memIds . " AND category_id IN ( SELECT category_id FROM member_category)" diff --git a/Toolkit/Members/templates/userSearchForm.html b/Toolkit/Members/templates/userSearchForm.html index a295720..d6980e6 100644 --- a/Toolkit/Members/templates/userSearchForm.html +++ b/Toolkit/Members/templates/userSearchForm.html @@ -1,9 +1,9 @@ -