/** Converts a WordPress timestamp to UTC. */ function ec3_to_utc($timestamp, $fmt = '%Y%m%dT%H%M00Z') { $result = gmstrftime($fmt, ec3_to_time($timestamp)); return $result; }
/** Get a human-readable 'time since' the current event. */ function ec3_get_since() { // To use %SINCE%, you need Dunstan's 'Time Since' plugin. if (function_exists('time_since')) { $event = ec3_sensible_start_event(); if (!empty($event)) { return time_since(time(), ec3_to_time($event->start)); } } return ''; }
/** Template function. 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; } global $ec3, $wpdb, $wp_version; // Parse $limit: // NUMBER - limits number of posts // NUMBER days - next NUMBER of days if (empty($limit)) { $limit_numposts = 'LIMIT 5'; } elseif (preg_match('/^ *([0-9]+) *d(ays?)?/', $limit, $matches)) { $secs = intval($matches[1]) * 24 * 3600; $and_before = "AND start<='" . ec3_strftime('%Y-%m-%d', time() + $secs) . "'"; } elseif (intval($limit) < 1) { $limit_numposts = 'LIMIT 5'; } else { $limit_numposts = 'LIMIT ' . intval($limit); } if (!$date_format) { $date_format = get_option('date_format'); } // Find the upcoming events. $calendar_entries = $wpdb->get_results("SELECT DISTINCT\r\n p.id AS id,\r\n post_title,\r\n start,\r\n u.{$ec3->wp_user_nicename} AS author,\r\n allday\r\n FROM {$ec3->schedule} s\r\n LEFT JOIN {$wpdb->posts} p ON s.post_id=p.id\r\n LEFT JOIN {$wpdb->users} u ON p.post_author = u.id\r\n WHERE p.post_status='publish'\r\n AND end>='{$ec3->today}' {$and_before}\r\n ORDER BY start {$limit_numposts}"); echo "<ul class='ec3_events'>"; echo "<!-- Generated by Event Calendar v{$ec3->version} -->\n"; if ($calendar_entries) { $time_format = get_option('time_format'); $current_month = false; $current_date = false; $data = array(); foreach ($calendar_entries as $entry) { // To use %SINCE%, you need Dunstan's 'Time Since' plugin. if (function_exists('time_since')) { $data['SINCE'] = time_since(time(), ec3_to_time($entry->start)); } // Month changed? $data['MONTH'] = mysql2date($month_format, $entry->start); 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'] = mysql2date($date_format, $entry->start); 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']; } if ($entry->allday) { $data['TIME'] = __('all day', 'ec3'); } else { $data['TIME'] = mysql2date($time_format, $entry->start); } $data['TITLE'] = htmlentities(stripslashes(strip_tags($entry->post_title)), ENT_QUOTES, get_option('blog_charset')); $data['LINK'] = get_permalink($entry->id); $data['AUTHOR'] = htmlentities($entry->author, ENT_QUOTES, get_option('blog_charset')); 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"; }