function widget($args, $instance) { extract($args, EXTR_SKIP); $template = $instance['template']; $no_events = isset($instance['no_events']) ? $instance['no_events'] : ''; unset($instance['template']); unset($instance['no_events']); $events = eo_get_events($instance); echo $before_widget; echo $before_title; echo esc_html($instance['title']); echo $after_title; global $post; $tmp_post = $post; echo '<ul class="eo-events eo-events-widget">'; if ($events) { foreach ($events as $post) { setup_postdata($post); if (empty($template)) { //Use default template //Check if all day, set format accordingly if ($post->event_allday) { $format = get_option('date_format'); } else { $format = get_option('date_format') . ' ' . get_option('time_format'); } echo '<li><a title="' . the_title_attribute(array('echo' => false)) . '" href="' . get_permalink() . '">' . esc_html(get_the_title()) . '</a> ' . __('on', 'eventorganiser') . ' ' . eo_format_date($post->StartDate . ' ' . $post->StartTime, $format) . '</li>'; } else { echo '<li>' . EventOrganiser_Shortcodes::read_template($template) . '</li>'; } } $post = $tmp_post; wp_reset_postdata(); } else { echo $no_events; } echo '</ul>'; echo $after_widget; }
function eventorganiser_list_events($query, $args = array(), $echo = 1) { $args = array_merge(array('id' => '', 'class' => 'eo-event-list', 'type' => 'shortcode', 'no_events' => ''), $args); /* Pass these defaults - backwards compat with using eo_get_events()*/ $query = wp_parse_args($query, array('posts_per_page' => -1, 'post_type' => 'event', 'suppress_filters' => false, 'orderby' => 'eventstart', 'order' => 'ASC', 'showrepeats' => 1, 'group_events_by' => '', 'showpastevents' => true)); //Make sure false and 'False' etc actually get parsed as 0/false (input from shortcodes, for instance, can be varied). //This maybe moved to the shortcode handler if this function is made public. if (strtolower($query['showpastevents']) === 'false') { $query['showpastevents'] = 0; } if (!empty($query['numberposts'])) { $query['posts_per_page'] = (int) $query['numberposts']; } $template = isset($args['template']) ? $args['template'] : ''; global $eo_event_loop, $eo_event_loop_args; $eo_event_loop_args = $args; $eo_event_loop = new WP_Query($query); /** * @ignore * Try to find template - backwards compat. Don't use this filter. Will be removed! */ $template_file = apply_filters('eventorganiser_event_list_loop', false); $template_file = locate_template($template_file); if ($template_file || empty($template)) { ob_start(); if (empty($template_file)) { $template_file = eo_locate_template(array($eo_event_loop_args['type'] . '-event-list.php', 'event-list.php'), true, false); } else { require $template_file; } $html = ob_get_contents(); ob_end_clean(); } else { //Using the 'placeholder' template $no_events = isset($args['no_events']) ? $args['no_events'] : ''; $line_wrap = '<li class="%2$s">%1$s</li>'; $id = !empty($args['id']) ? 'id="' . esc_attr($args['id']) . '"' : ''; $container = '<ul ' . $id . ' class="%2$s">%1$s</ul>'; $html = ''; if ($eo_event_loop->have_posts()) { while ($eo_event_loop->have_posts()) { $eo_event_loop->the_post(); $event_classes = eo_get_event_classes(); $html .= sprintf($line_wrap, EventOrganiser_Shortcodes::read_template($template), esc_attr(implode(' ', $event_classes))); } } elseif ($no_events) { $html .= sprintf($line_wrap, $no_events, 'eo-no-events'); } $html = sprintf($container, $html, esc_attr($args['class'])); } wp_reset_postdata(); if ($echo) { echo $html; } return $html; }