/** * Gets a list of upcoming events. * Only the events that are not yet over will be returned. */ public static function get_upcoming_events($limit = 5) { if (!eab_has_post_indexer()) { return array(); } $limit = (int) $limit ? (int) $limit : 5; global $wpdb; $result = array(); $count = 0; $pi_table = eab_pi_get_table(); $pi_published = eab_pi_get_post_date(); $pi_blog_id = eab_pi_get_blog_id(); $pi_post_id = eab_pi_get_post_id(); $raw_network_events = $wpdb->get_results("SELECT * FROM {$wpdb->base_prefix}{$pi_table} WHERE post_type='incsub_event' ORDER BY {$pi_published} DESC"); if (!$raw_network_events) { return $result; } foreach ($raw_network_events as $event) { if ($count == $limit) { break; } switch_to_blog($event->{$pi_blog_id}); $post = get_post($event->{$pi_post_id}); $tmp_event_instance = new Eab_EventModel($post); $tmp_event_instance->cache_data(); if ($tmp_event_instance->is_expired()) { continue; } $post->blog_id = $event->{$pi_blog_id}; $result[] = $post; $count++; restore_current_blog(); } return $result; }