function widget($args, $instance) { extract($args, EXTR_SKIP); echo $before_widget . $before_title; echo ec3_widget_title($instance['title'], 'Upcoming Events'); echo $after_title; if (ec3_check_installed(__('Upcoming Events', 'ec3'))) { // Parse $limit: // NUMBER - limits number of posts // NUMBER days - next NUMBER of days $limit = $instance['limit']; $num = intval($limit); $query = new WP_Query(); if (preg_match('/^ *([0-9]+) *d(ays?)?/', $limit, $matches)) { $query->query('ec3_days=' . intval($matches[1])); } elseif ($num > 0) { $query->query('ec3_after=today&posts_per_page=' . $num); } elseif ($num < 0) { $query->query('ec3_before=today&order=asc&posts_per_page=' . abs($num)); } else { $query->query('ec3_after=today&posts_per_page=5'); } echo "<ul class='ec3_events'>"; echo '<!-- Generated by Event-Calendar v' . ec3_get_version() . ' -->' . "\n"; if ($query->have_posts()) { $current_date = false; for ($evt = ec3_iter_all_events_q($query); $evt->valid(); $evt->next()) { // Date changed? $date = ec3_get_date(); if (!$current_date || $current_date != $date) { if ($current_date) { echo "</ul></li>\n"; } echo "<li class='ec3_list ec3_list_day'>{$date}:\n<ul>\n"; $current_date = $date; } // Print the event. echo ' <li><a href="' . get_permalink() . '">' . get_the_title() . ' (' . ec3_get_start_time() . ')</a></li>' . "\n"; } if ($current_date) { echo "</ul></li>\n"; } } else { echo "<li>" . __('No events.', 'ec3') . "</li>\n"; } echo "</ul>\n"; } echo $after_widget; }
/** Template function, for backwards compatibility. * Call this from your template to insert a list of forthcoming events. * Available template variables are: * - template_day: %DATE% %SINCE% (only with Time Since plugin) * - template_event: %DATE% %TIME% %LINK% %TITLE% %AUTHOR% */ function ec3_get_events($limit, $template_event = EC3_DEFAULT_TEMPLATE_EVENT, $template_day = EC3_DEFAULT_TEMPLATE_DAY, $date_format = EC3_DEFAULT_DATE_FORMAT, $template_month = EC3_DEFAULT_TEMPLATE_MONTH, $month_format = EC3_DEFAULT_MONTH_FORMAT) { if (!ec3_check_installed(__('Upcoming Events', 'ec3'))) { return; } // Parse $limit: // NUMBER - limits number of posts // NUMBER days - next NUMBER of days $query = new WP_Query(); if (preg_match('/^ *([0-9]+) *d(ays?)?/', $limit, $matches)) { $query->query('ec3_listing=event&ec3_days=' . intval($matches[1])); } elseif (intval($limit) > 0) { $query->query('ec3_after=today&posts_per_page=' . intval($limit)); } elseif (intval($limit) < 0) { $query->query('ec3_before=today&order=asc&posts_per_page=' . abs(intval($limit))); } else { $query->query('ec3_after=today&posts_per_page=5'); } echo "<ul class='ec3_events'>"; echo '<!-- Generated by Event-Calendar v' . ec3_get_version() . ' -->' . "\n"; if ($query->have_posts()) { $current_month = false; $current_date = false; $data = array(); for ($evt = ec3_iter_all_events_q($query); $evt->valid(); $evt->next()) { $data['SINCE'] = ec3_get_since(); // Month changed? $data['MONTH'] = ec3_get_month($month_format); if ((!$current_month || $current_month != $data['MONTH']) && $template_month) { if ($current_date) { echo "</ul></li>\n"; } if ($current_month) { echo "</ul></li>\n"; } echo "<li class='ec3_list ec3_list_month'>" . ec3_format_str($template_month, $data) . "\n<ul>\n"; $current_month = $data['MONTH']; $current_date = false; } // Date changed? $data['DATE'] = ec3_get_date($date_format); if ((!$current_date || $current_date != $data['DATE']) && $template_day) { if ($current_date) { echo "</ul></li>\n"; } echo "<li class='ec3_list ec3_list_day'>" . ec3_format_str($template_day, $data) . "\n<ul>\n"; $current_date = $data['DATE']; } $data['TIME'] = ec3_get_start_time(); $data['TITLE'] = get_the_title(); $data['LINK'] = get_permalink(); $data['AUTHOR'] = get_the_author(); echo " <li>" . ec3_format_str($template_event, $data) . "</li>\n"; } if ($current_date) { echo "</ul></li>\n"; } if ($current_month) { echo "</ul></li>\n"; } } else { echo "<li>" . __('No events.', 'ec3') . "</li>\n"; } echo "</ul>\n"; }