__('Displays upcoming events with optional filters.', AEC_PLUGIN_NAME));
parent::WP_Widget(false, __('AEC Upcoming Events', AEC_PLUGIN_NAME), $widget_ops);
}
function query_events_by_category($category_id, $eventlimit){
global $wpdb;
$start = date('Y-m-d');
$andcategory = ($category_id) ? ' AND category_id = ' . $category_id : '';
$results = $wpdb->get_results($wpdb->prepare('SELECT
id,
title,
start,
end,
allDay,
category_id
FROM ' . $wpdb->prefix . AEC_EVENT_TABLE . '
WHERE (start >= %s
OR end >= %s)' .
$andcategory . '
ORDER BY start
LIMIT %d;',
$start,
$start,
$eventlimit));
if ($results !== false) return $results;
}
function query_categories(){
global $wpdb;
$results = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . AEC_CATEGORY_TABLE . ' ORDER BY id;');
if ($results !== false) return $results;
}
function widget($args, $instance){
extract($args, EXTR_SKIP);
$whitelabel = ($instance['whitelabel']) ? apply_filters('widget_whitelabel', $instance['whitelabel']) : false;
$eventlimit = ($instance['eventlimit']) ? apply_filters('widget_eventlimit', $instance['eventlimit']) : 4;
$category = ($instance['category']) ? apply_filters('widget_category', $instance['category']) : 0;
$title = ($instance['title']) ? apply_filters('widget_title', $instance['title']) : __('Upcoming Events', AEC_PLUGIN_NAME);
$callink = ($instance['callink']) ? apply_filters('widget_callink', $instance['callink']) : 0;
echo $before_widget;
echo $before_title . $title . $after_title;
$out = '
';
$events = $this->query_events_by_category($category, $eventlimit);
if ($events){
foreach ($events as $event){
// split database formatted datetime value into display formatted date and time values
$event->start_date = ajax_event_calendar::date_convert($event->start, AEC_DB_DATETIME_FORMAT, AEC_WP_DATE_FORMAT);
$event->start_time = ajax_event_calendar::date_convert($event->start, AEC_DB_DATETIME_FORMAT, AEC_WP_TIME_FORMAT);
$event->end_date = ajax_event_calendar::date_convert($event->end, AEC_DB_DATETIME_FORMAT, AEC_WP_DATE_FORMAT);
$event->end_time = ajax_event_calendar::date_convert($event->end, AEC_DB_DATETIME_FORMAT, AEC_WP_TIME_FORMAT);
// link to event
$class = ($whitelabel) ? '' : ' cat' . $event->category_id;
$out .= '- ';
$out .= '' . ajax_event_calendar::render_i18n_data($event->title) . '
';
$out .= $event->start_date;
// multiple day event, not spanning all day
if (!$event->allDay)
$out .= ' ' . $event->start_time;
$out .= ' ';
}
} else {
$out .= '- ';
$out .= __('No upcoming events', AEC_PLUGIN_NAME);
$out .= '
';
}
if ($callink) $out .= "';
$out .= '
';
echo $out;
echo $after_widget;
}
function update($new_instance, $old_instance){
$instance = $old_instance;
$instance['whitelabel'] = (isset($new_instance['whitelabel']) ? 1 : 0);
$instance['callink'] = $new_instance['callink'];
$instance['eventlimit'] = $new_instance['eventlimit'];
$instance['title'] = $new_instance['title'];
$instance['category'] = $new_instance['category'];
return $instance;
}
/** @see WP_Widget::form */
function form($instance){
$instance = wp_parse_args((array) $instance, array('eventlimit' => 4, 'title' => __('Upcoming Events', AEC_PLUGIN_NAME), 'category' => 0, 'whitelabel' => false, 'callink' => ''));
$whitelabel = $instance['whitelabel'];
$eventlimit = $instance['eventlimit'];
$title = $instance['title'];
$category = $instance['category'];
$callink = $instance['callink'];
?>
id="get_field_id('whitelabel'); ?>" name="get_field_name('whitelabel'); ?>" />