From 82fbb4f6f1dc820a15743788d195e8d178c0352e Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 4 Nov 2016 13:43:30 -0400 Subject: [PATCH] Adding in the venue to search form and query for event list. Add the venues so they get pulled into the select box for search. Add venue id for search query. --- models/front/events/baseAction.php | 63 ++++++++++++++++++++-- models/front/events/list.php | 30 ++++++++--- views/front/events/searchFormBeerweek.html | 59 +++++++++++--------- 3 files changed, 115 insertions(+), 37 deletions(-) diff --git a/models/front/events/baseAction.php b/models/front/events/baseAction.php index 4fd9e75..c6eb54a 100644 --- a/models/front/events/baseAction.php +++ b/models/front/events/baseAction.php @@ -26,6 +26,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents { public $wpdb; public $config; + public $memberList = array(); /** * __construct @@ -42,6 +43,15 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents $this->config = $config; parent::__construct(false, false); + if ( $this->config['settings']['use_venue_locations'] ) { + $this->getMemberList(); + } + + } + + public function getMemberList() + { + $this->memberList = apply_filters('member_names_and_ids', ''); } public function printEvents() @@ -89,14 +99,15 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents public function getMembers() { $members = array(); - $memberData = apply_filters('member_names_and_ids', ''); - if ( isset( $memberData ) && is_array( $memberData) && !empty( $memberData) ) { - foreach ( $memberData as $member ) { + + if ( isset( $this->memberList ) && is_array( $this->memberList ) && !empty( $this->memberList ) ) { + foreach ( $this->memberList as $member ) { // check to see if this member has an event (current) $sql = " SELECT count(id) FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events WHERE ref_dest = %d + AND status = 10 AND id IN ( SELECT event FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times @@ -112,9 +123,40 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents } } } + return $members; } + public function getVenues() { + $venues = array(); + + if ( isset( $this->memberList ) && is_array( $this->memberList ) && !empty( $this->memberList ) ) { + foreach ( $this->memberList as $member ) { + // check to see if this member has an event (current) + $sql = " + SELECT count(id) + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events + WHERE other_ref_dest = %d + AND status = 10 + AND id IN ( + SELECT event + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times + WHERE active + AND start_time >= NOW())"; + $result = $this->wpdb->get_var( $this->wpdb->prepare( $sql, $member['id'] ) ); + + if ( $result > 0 ) { + $venues[$member['id']] = array( + 'id' => $member['id'], + 'name' => $member['name'] + ); + } + } + } + + return $venues; + } + /** * getModelEventsData * @@ -124,11 +166,12 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents * @param integer $limit Number of events to return (optional) * @param integer $memberId Member ID if filtering by member * @param integer $amenityId Amenity id for filter + * @param integer $venueId Venue id for filter * * @access public * @return array events */ - public function getModelEventsData( $categoryId = null, $limit = null, $memberId = null, $amenityId = null ) + public function getModelEventsData( $categoryId = null, $limit = null, $memberId = null, $amenityId = null, $venueId = null ) { $this->postAddTimes = true; @@ -154,6 +197,18 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents )"; } + if ( $venueId = filter_var( $venueId, FILTER_VALIDATE_INT ) ) { + $whereParts[] = " + T.other_ref_dest = {$venueId} + AND T.id IN ( + SELECT event + FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times AS ET + WHERE status = " . $this->config['status_numb']['Active'] . " + AND " . $this->dateRange . " + ) + "; + } + // If a category ID is supplied if ( $catId = filter_var( $categoryId, FILTER_VALIDATE_INT ) ) { //$events = $this->getEventsByCategory( $catId, $limit ); diff --git a/models/front/events/list.php b/models/front/events/list.php index 6a4e8e4..73b8a2e 100644 --- a/models/front/events/list.php +++ b/models/front/events/list.php @@ -61,6 +61,8 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction $amenities = array(); $memberId = null; $members = array(); + $venues = array(); + $venueId = null; // If a memberID has been specified, limit to that member if ( isset( $actionData['request']['member'] ) ) { @@ -98,6 +100,10 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction $search = true; $action = 'event-list'; } + if ( isset( $_REQUEST['venue'] ) && $venueId = filter_var( $_REQUEST['venue'], FILTER_VALIDATE_INT ) ) { + $search = true; + $action = 'event-list'; + } if ( isset( $_REQUEST['member'] ) && $memberId = filter_var( $_REQUEST['member'], FILTER_VALIDATE_INT ) ) { $search = true; $action = 'event-list'; @@ -198,8 +204,16 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction } $categories = $this->getCategories(); - $amenities = $this->getAmenities(); - $members = $this->getMembers(); + if ( $this->config['settings']['use_event_amenities'] ) { + $amenities = $this->getAmenities(); + } + // get venues only if use_venue_locations is turned on + if ( $this->config['settings']['use_venue_locations'] ) { + $members = $this->getMembers(); + $venues = $this->getVenues(); + } + + wp_register_script( 'event-dashboard-js', GLM_MEMBERS_EVENTS_PLUGIN_BASE_URL . '/js/dashboard.js', @@ -212,10 +226,10 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction switch ( $action ) { case 'front-page': - $events = $this->getModelEventsData( $categoryId, $limit, $memberId, $amenityId ); + $events = $this->getModelEventsData( $categoryId, $limit, $memberId, $amenityId, $venueId ); break; case 'event-list-name': - $events = $this->getModelEventsData( $eventNameSearch, null, $memberId, $amenityId ); + $events = $this->getModelEventsData( $eventNameSearch, null, $memberId, $amenityId, $venueId ); if ( !$view ) { $view = 'agenda.html'; } @@ -223,7 +237,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction case 'event-list': $this->postAddLocations = true; $this->postAddRecurrences = true; - $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId ); + $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId, $venueId ); if ( !$view ) { $view = 'agenda.html'; } @@ -280,7 +294,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction include_once GLM_MEMBERS_EVENTS_PLUGIN_PATH . '/SetaPDF/Autoload.php'; $this->postAddLocations = true; $this->postAddRecurrences = true; - $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId ); + $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId, $venueId ); $this->postAddLocations = false; $this->postAddRecurrences = false; @@ -545,7 +559,7 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction if ( !$view ) { $view = 'agenda.html'; } - $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId ); + $events = $this->getModelEventsData( $categoryId, null, $memberId, $amenityId, venueId ); $this->postAddRecurrences = false; break; } @@ -681,6 +695,8 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction 'amenities' => $amenities, 'memberId' => $memberId, 'members' => $members, + 'venues' => $venues, + 'venueId' => $venueId, 'events' => $events, 'eventsByDate' => $eventsByDate, 'fromDate' => $fromDate, diff --git a/views/front/events/searchFormBeerweek.html b/views/front/events/searchFormBeerweek.html index 404de0d..e894a19 100644 --- a/views/front/events/searchFormBeerweek.html +++ b/views/front/events/searchFormBeerweek.html @@ -16,30 +16,37 @@ {/foreach} -
- - -
-
- - -
-
- - -
+ {if $settings.use_event_amenities} +
+ + +
+ {/if} + {if $settings.use_venue_locations} +
+ + +
+
+ + +
+ {/if}
@@ -62,10 +69,10 @@
- +
- + {if !$eventId} {else} -- 2.17.1