}
+ 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
*
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'];
$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');
// $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 {
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,
'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;
}
echo json_encode($return);
wp_die();
}
-}
\ No newline at end of file
+}
* @access public
* @return array The event
*/
- public function getModelEventData( $eventId )
+ public function getModelEventData( $eventId, $fromDate )
{
$this->postAddTimes = true;
$this->postAddLocations = true;
$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;
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;
if ( !$this->config['settings']['use_venue_locations'] ) {
$toDate = date('m/d/Y', strtotime( '+ 2 weeks' ));
}
+
$templateData = array(
'eventDays' => $eventDays,
'eventDay' => $eventDay,
'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,
{if $event.image}<img style="float:right;" src="{$imgUrl}{$event.image}">{/if}
{$event.intro}
<div>
- <a class="glm-read-more" href="{$siteBaseUrl}event-detail/{$event.name_slug}/">Read More</a>
+ <a class="glm-read-more" href="{$siteBaseUrl}event-detail/{$event.name_slug}/{if $event.recurrences.0.recurring.value}?glm_event_from={$date|date_format:"%m/%d/%Y"|escape:"url"}{/if}">Read More</a>
</div>
</div>
</div>
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';
} else if( sessionStorage.override === 'yes'){
view = 'agenda';
}
-
+
// AJAX FUNCTION ************************************************
// Get calendar month via AJAX
function eventsCalMonthAJAX(month) {
start: i.start,
end: i.last,
allDay: i.all_day,
- url: i.url
+ url: i.url,
+ recurs: i.recurs
};
});
$("#eventCalendar").fullCalendar('removeEvents');
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: {
$(document).on("click", "button.fc-button", function () {
eventsCalMonthAJAX(month_obj);
});
-
+
$('#eventCalendar').find('.fc-today-button').on("click", function(){
eventsCalMonthAJAX(month_obj);
});
<div class="small-12 medium-{if $event.locations || $event.use_member_location.value || $event.other_ref_dest}7{else}12{/if} column">
<div id="glm-event-detail-dates">
<div>
- {if $event.recurrences.0.recurring.value}
- <div style="width: 100%; height:auto;display:inline-block;clear:both;">
- {foreach $event.times as $time}
- {if $time.start_time.timestamp >= date('U')}
- <div style="font-size: 12px;display: block;width:72px;height: 25px;float:left;background-color:grey; border: solid black 1px; border-radius: 5px;margin:2px;padding: 1px 2px;">{$time.start_time.timestamp|date_format:"%m/%d/%Y"}</div>
- {/if}
- {/foreach}
- </div>
- {else}
- <strong>{$event.dates}</strong>
- {/if}
- {if $event.recurDays}<span>{$event.recurDays}</span>{/if}
+ <strong>{$event.dates}</strong>
{if $expired} <span style="color:red;">(Expired)</span>{/if}
</div>
{if !$event.all_day}