From a9d8f5d5800c13777ce05fc7a62e8cef8d4bd615 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 7 Mar 2017 12:51:44 -0500 Subject: [PATCH] Update to show just the date that was clicked. This is for recurring event only. If they get shown from admin view event then the next current event date is used. --- classes/data/dataEvents.php | 18 ++++++++++++++++ models/admin/ajax/eventsCalMonthAJAX.php | 26 ++++++++++++------------ models/front/events/baseAction.php | 19 +++++++++++------ models/front/events/detail.php | 5 +++-- views/front/events/agenda.html | 15 ++++++++------ views/front/events/detail.html | 13 +----------- 6 files changed, 57 insertions(+), 39 deletions(-) diff --git a/classes/data/dataEvents.php b/classes/data/dataEvents.php index 7ec2b6c..db4f34d 100644 --- a/classes/data/dataEvents.php +++ b/classes/data/dataEvents.php @@ -839,6 +839,24 @@ class GlmDataEvents extends GlmDataAbstract } + public function getNextDate( $id, $fromDate ) + { + // Load the data class for Event Times + require_once GLM_MEMBERS_EVENTS_PLUGIN_CLASS_PATH . '/data/dataTimes.php'; + $Times = new GlmDataEventsTimes( $this->wpdb, $this->config ); + + // Select the first entry by matching min start time + $next = $Times->getEntry( 0, 'id', "T.event = $id AND T.start_time >= DATE('" . date( "Y-m-d", strtotime( $fromDate ) ) . "') ORDER BY T.start_time" ); + + // If there's a first times entry + if ($next) { + // Convert to text date + $nextDate = date('m/d/Y', $next['start_time']['timestamp']); + return $nextDate; + } + return false; + } + /** * Get ID/Name list * diff --git a/models/admin/ajax/eventsCalMonthAJAX.php b/models/admin/ajax/eventsCalMonthAJAX.php index 50a55be..eac5483 100644 --- a/models/admin/ajax/eventsCalMonthAJAX.php +++ b/models/admin/ajax/eventsCalMonthAJAX.php @@ -129,7 +129,7 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes if( isset( $_REQUEST['date_string'] ) || isset($_REQUEST['all_events'] ) ){ $image_url = GLM_MEMBERS_PLUGIN_MEDIA_URL . '/images/small/'; if( isset( $_REQUEST['date_string'] ) ){ - + $date = date_parse($_REQUEST['date_string']); $month = $date['month']; @@ -147,7 +147,7 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes $events = $this->getModelTimesData(); // $sql = "SELECT * FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times WHERE end_time >= CURDATE() GROUP BY event ORDER BY start_time LIMIT 3;"; // $events = $wpdb->get_results($sql, 'ARRAY_A'); - + // foreach($events_times as $times){ // $sql = "SELECT * FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events WHERE id = " . $times->event.";"; // $event[] = $wpdb->get_results($sql, 'ARRAY_A'); @@ -157,20 +157,20 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes // $events[] = $e; // } // } - + } // $this->dateRangeTimes = "AND end_time >= CURDATE() ORDER BY start_time LIMIT 3"; // $events = $this->getModelTimesData(); - - - + + + $datesArray = array(); - foreach($events as $event){ + foreach($events as $event){ $sql = "SELECT * FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "events WHERE id = " . $event['event']; $event_recur = $wpdb->get_results($sql); - + if($event_recur[0]->image !== ''){ $image = $image_url . $event_recur[0]->image; } else { @@ -185,13 +185,13 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes if($start_timestamp < $end_timestamp){ $start_date = $start_date . " - " . $end_date; } - + if(count($event['start_time']['datetime']) > 1){ $end_date = date('M d', strtotime(end($event['end_time']['datetime'])->end_time)); } else { $end_date = ''; } - + $event_data[] = array( "start_date" => $start_date, "end_date" => $end_date, @@ -202,9 +202,9 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes 'time' => $time_of_day, 'timestamp' => $start_timestamp, 'slug' => $event->name_slug, - 'url' => GLM_MEMBERS_EVENTS_SITE_BASE_URL . 'event-detail/' . $event_recur[0]->name_slug + 'url' => GLM_MEMBERS_EVENTS_SITE_BASE_URL . 'event-detail/' . $event_recur[0]->name_slug . "/" ); - + $datesArray[$event['start_time']['timestamp']][] = $event_data; } @@ -267,4 +267,4 @@ class GlmMembersAdmin_ajax_eventsCalMonthAJAX extends GlmDataEventsTimes echo json_encode($return); wp_die(); } -} \ No newline at end of file +} diff --git a/models/front/events/baseAction.php b/models/front/events/baseAction.php index 43eaa60..d292ba7 100644 --- a/models/front/events/baseAction.php +++ b/models/front/events/baseAction.php @@ -414,7 +414,7 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents * @access public * @return array The event */ - public function getModelEventData( $eventId ) + public function getModelEventData( $eventId, $fromDate ) { $this->postAddTimes = true; $this->postAddLocations = true; @@ -429,11 +429,18 @@ abstract class GlmMembersFront_events_baseAction extends GlmDataEvents $event['ticket_url'] = 'http://' . $event['ticket_url']; } } - $event['dates'] = $this->getEventDate( - strtotime( $event['starting_date'] ), - strtotime( $event['ending_date'] ), - 'timestamp' - ); + if ( $event['recurrences'][0]['recurring']['value'] ) { + $nextDate = $this->getNextDate( $event['id'], $fromDate ); + $event['dates'] = ( $nextDate ) + ? strftime( '%b %e, %Y', strtotime( $nextDate ) ) + : strftime( '%b %e, %Y', strtotime( $event['ending_date'] ) ); + } else { + $event['dates'] = $this->getEventDate( + strtotime( $event['starting_date'] ), + strtotime( $event['ending_date'] ), + 'timestamp' + ); + } $event['recurDays'] = $this->getEventRecurDays( $event ); $this->postAddTimes = false; $this->postAddLocations = false; diff --git a/models/front/events/detail.php b/models/front/events/detail.php index bc4dfa7..78ceee5 100644 --- a/models/front/events/detail.php +++ b/models/front/events/detail.php @@ -118,12 +118,13 @@ class GlmMembersFront_events_detail extends GlmMembersFront_events_baseAction case 'event-detail': if ( $eventId ) { $this->postAddRecurrences = true; - $event = $this->getModelEventData($eventId); + $event = $this->getModelEventData( $eventId, $fromDate ); $this->postAddRecurrences = false; // Check the end date to see if this event has expired. if ( $event['ending_timestamp'] < strtotime( 'today' ) ) { $expired = true; } + // Check the times array for this event and find the next event date. } $view = 'detail.html'; break; @@ -147,6 +148,7 @@ class GlmMembersFront_events_detail extends GlmMembersFront_events_baseAction if ( !$this->config['settings']['use_venue_locations'] ) { $toDate = date('m/d/Y', strtotime( '+ 2 weeks' )); } + $templateData = array( 'eventDays' => $eventDays, 'eventDay' => $eventDay, @@ -158,7 +160,6 @@ class GlmMembersFront_events_detail extends GlmMembersFront_events_baseAction 'venueId' => $venueId, 'assetsUrl' => GLM_MEMBERS_EVENTS_PLUGIN_URL . 'assets/', 'siteBaseUrl' => GLM_MEMBERS_EVENTS_SITE_BASE_URL, - //'currentUrl' => $_SERVER['HTTP_REFERER'], 'categories' => $categories, 'fromDate' => $fromDate, 'toDate' => $toDate, diff --git a/views/front/events/agenda.html b/views/front/events/agenda.html index ff2f2d1..81a0814 100644 --- a/views/front/events/agenda.html +++ b/views/front/events/agenda.html @@ -63,7 +63,7 @@ {if $event.image}{/if} {$event.intro}
- Read More + Read More
@@ -102,7 +102,7 @@ var event_search = $(".glm-search-icon"); var main_content = $("#main-content"); var view = '{$cal_view}'; - + // console.log(sessionStorage.view + " : " + sessionStorage.override); event_search.on('click', function(){ sessionStorage.override = 'yes'; @@ -113,7 +113,7 @@ } else if( sessionStorage.override === 'yes'){ view = 'agenda'; } - + // AJAX FUNCTION ************************************************ // Get calendar month via AJAX function eventsCalMonthAJAX(month) { @@ -151,7 +151,8 @@ start: i.start, end: i.last, allDay: i.all_day, - url: i.url + url: i.url, + recurs: i.recurs }; }); $("#eventCalendar").fullCalendar('removeEvents'); @@ -185,7 +186,9 @@ handleWindowResize: true, lazyFetching: true, eventClick : function (event){ - location.href = event.url; + console.log(event); + //location.href = event.url + '?glm_event_from=' + event.start.format(); + return false; }, eventLimit: true, views: { @@ -231,7 +234,7 @@ $(document).on("click", "button.fc-button", function () { eventsCalMonthAJAX(month_obj); }); - + $('#eventCalendar').find('.fc-today-button').on("click", function(){ eventsCalMonthAJAX(month_obj); }); diff --git a/views/front/events/detail.html b/views/front/events/detail.html index 42ad590..2575515 100644 --- a/views/front/events/detail.html +++ b/views/front/events/detail.html @@ -60,18 +60,7 @@
- {if $event.recurrences.0.recurring.value} -
- {foreach $event.times as $time} - {if $time.start_time.timestamp >= date('U')} -
{$time.start_time.timestamp|date_format:"%m/%d/%Y"}
- {/if} - {/foreach} -
- {else} - {$event.dates} - {/if} - {if $event.recurDays}{$event.recurDays}{/if} + {$event.dates} {if $expired} (Expired){/if}
{if !$event.all_day} -- 2.17.1