164 lines
6.7 KiB
PHP
164 lines
6.7 KiB
PHP
<?php
|
|
/** no direct access **/
|
|
defined('MECEXEC') or die();
|
|
|
|
/** @var MEC_main $this */
|
|
|
|
// MEC Settings
|
|
$settings = $this->get_settings();
|
|
|
|
// The module is disabled
|
|
if(!isset($settings['next_event_module_status']) or (isset($settings['next_event_module_status']) and !$settings['next_event_module_status'])) return;
|
|
|
|
// Next Event Method
|
|
$method = isset($settings['next_event_module_method']) ? $settings['next_event_module_method'] : 'occurrence';
|
|
|
|
// Multiple Occurrences
|
|
if($method == 'multiple')
|
|
{
|
|
include MEC::import('app.modules.next-event.multiple', true, true);
|
|
return;
|
|
}
|
|
|
|
// Date Format
|
|
$date_format1 = isset($settings['next_event_module_date_format1']) ? $settings['next_event_module_date_format1'] : 'M d Y';
|
|
|
|
$date = array();
|
|
if(!empty($event->date)) $date = $event->date;
|
|
|
|
$start_date = (isset($date['start']) and isset($date['start']['date'])) ? $date['start']['date'] : date('Y-m-d');
|
|
if(isset($_GET['occurrence']) and trim($_GET['occurrence'])) $start_date = sanitize_text_field($_GET['occurrence']);
|
|
|
|
$next_date = array();
|
|
$next_time = array();
|
|
|
|
// Show next occurrence from other events
|
|
if($method == 'event')
|
|
{
|
|
$start_hour = (isset($date['start']) and isset($date['start']['hour'])) ? $date['start']['hour'] : 8;
|
|
$start_minutes = (isset($date['start']) and isset($date['start']['minutes'])) ? $date['start']['minutes'] : 0;
|
|
$start_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? $date['start']['ampm'] : 'AM';
|
|
|
|
$next = $this->get_next_event(array
|
|
(
|
|
'show_past_events'=>0,
|
|
'sk-options'=>array
|
|
(
|
|
'list'=>array
|
|
(
|
|
'start_date_type'=>'date',
|
|
'start_date'=>$start_date,
|
|
'limit'=>1,
|
|
)
|
|
),
|
|
'seconds_date'=>$start_date,
|
|
'seconds'=>$this->time_to_seconds($this->to_24hours($start_hour, $start_ampm), $start_minutes),
|
|
'exclude'=>($method == 'event' ? array($event->ID) : NULL),
|
|
'include'=>NULL,
|
|
));
|
|
|
|
// Nothing Found!
|
|
if(!isset($next->data)) return false;
|
|
|
|
$next_date = $next->date;
|
|
$next_time = $next->data->time;
|
|
}
|
|
else
|
|
{
|
|
// Nothing Found!
|
|
if(!isset($event->dates) or (isset($event->dates) and !is_array($event->dates)) or (isset($event->dates) and is_array($event->dates) and !count($event->dates))) return false;
|
|
|
|
$custom_days = false;
|
|
if(isset($event->data->meta['mec_repeat_type']) and $event->data->meta['mec_repeat_type'] === 'custom_days') $custom_days = true;
|
|
|
|
if(isset($date['start']['hour']) and isset($date['start']['minutes']) and isset($date['start']['ampm']))
|
|
{
|
|
$s_hour = $date['start']['hour'];
|
|
if(strtoupper($date['start']['ampm']) == 'AM' and $s_hour == '0') $s_hour = 12;
|
|
|
|
$start_date .= ' '.sprintf("%02d", $s_hour).':'.sprintf("%02d", $date['start']['minutes']).' '.$date['start']['ampm'];
|
|
}
|
|
|
|
$next = $event;
|
|
|
|
// Occurrences
|
|
$found = false;
|
|
|
|
foreach($event->dates as $occ)
|
|
{
|
|
$start_datetime = $occ['start']['date'];
|
|
if($custom_days)
|
|
{
|
|
$s_hour = $occ['start']['hour'];
|
|
if(strtoupper($occ['start']['ampm']) == 'AM' and $s_hour == '0') $s_hour = 12;
|
|
|
|
$start_time = sprintf("%02d", $s_hour).':'.sprintf("%02d", $occ['start']['minutes']).' '.$occ['start']['ampm'];
|
|
$start_datetime .= ' '.$start_time;
|
|
}
|
|
|
|
if(strtotime($start_datetime) > strtotime($start_date))
|
|
{
|
|
$found = true;
|
|
$next_date = $occ;
|
|
$next_time = $next->data->time;
|
|
|
|
if($custom_days)
|
|
{
|
|
$end_datetime = $occ['end']['date'];
|
|
$e_hour = $occ['end']['hour'];
|
|
if(strtoupper($occ['end']['ampm']) == 'AM' and $e_hour == '0') $e_hour = 12;
|
|
|
|
$end_time = sprintf("%02d", $e_hour).':'.sprintf("%02d", $occ['end']['minutes']).' '.$occ['end']['ampm'];
|
|
$end_datetime .= ' '.$end_time;
|
|
|
|
$next_time = array(
|
|
'start' => $this->get_time(strtotime($start_datetime)),
|
|
'end' => $this->get_time(strtotime($end_datetime)),
|
|
'start_raw' => $start_time,
|
|
'end_raw' => $end_time,
|
|
);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Nothing Found!
|
|
if(!$found) return false;
|
|
}
|
|
|
|
$time_comment = isset($next->data->meta['mec_comment']) ? $next->data->meta['mec_comment'] : '';
|
|
$allday = isset($next->data->meta['mec_allday']) ? $next->data->meta['mec_allday'] : 0;
|
|
|
|
$midnight_event = $this->is_midnight_event($next);
|
|
if($midnight_event) $next_date['end']['date'] = date('Y-m-d', strtotime('-1 Day', strtotime($next_date['end']['date'])));
|
|
?>
|
|
<div class="mec-next-event-details mec-frontbox" id="mec_next_event_details">
|
|
<div class="mec-next-<?php echo $method; ?>">
|
|
<h3 class="mec-frontbox-title"><?php echo ($method == 'occurrence' ? esc_html__('Next Occurrence', 'modern-events-calendar-lite') : esc_html__('Next Event', 'modern-events-calendar-lite')); ?></h3>
|
|
<ul>
|
|
<li>
|
|
<a href="<?php echo $this->get_event_date_permalink($next, $next_date['start']['date'], true, $next_time); ?>"><?php echo ($method == 'occurrence' ? __('Go to occurrence page', 'modern-events-calendar-lite') : $next->data->title); ?></a>
|
|
</li>
|
|
<li>
|
|
<i class="mec-sl-calendar"></i>
|
|
<h6><?php _e('Date', 'modern-events-calendar-lite'); ?></h6>
|
|
<dl><dd><abbr class="mec-events-abbr"><?php echo $this->date_label($next_date['start'], (isset($next_date['end']) ? $next_date['end'] : NULL), $date_format1); ?></abbr></dd></dl>
|
|
</li>
|
|
<?php if(isset($next->data->time) and trim($next->data->time['start'])): ?>
|
|
<li>
|
|
<i class="mec-sl-clock"></i>
|
|
<h6><?php _e('Time', 'modern-events-calendar-lite'); ?></h6>
|
|
<i class="mec-time-comment"><?php echo (isset($time_comment) ? $time_comment : ''); ?></i>
|
|
<dl>
|
|
<?php if($allday == '0' and isset($next->data->time) and trim($next->data->time['start'])): ?>
|
|
<dd><abbr class="mec-events-abbr"><?php echo $next_time['start']; ?><?php echo (trim($next_time['end']) ? ' - '.$next_time['end'] : ''); ?></abbr></dd>
|
|
<?php else: ?>
|
|
<dd><abbr class="mec-events-abbr"><?php echo $this->m('all_day', __('All Day' , 'modern-events-calendar-lite')); ?></abbr></dd>
|
|
<?php endif; ?>
|
|
</dl>
|
|
</li>
|
|
<?php endif; ?>
|
|
</ul>
|
|
</div>
|
|
</div>
|