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;
 }
コード例 #2
0
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;
}