foreach ($events as $event) { ?> <article class="entry event post"> <?php $event_allday = get_post_meta($event['post_id'], 'event_allday', true); $hide_event_place = get_post_meta($event['post_id'], 'hide_event_place', true); $event_place_address = get_post_meta($event['post_id'], 'event_place_address', true); $event_date = TMM_Event::get_event_date($event['start_mktime']); $ev_end_mktime = (int) get_post_meta($event['post_id'], 'ev_end_mktime', true); $event_end_date = TMM_Event::get_event_date($event['end_mktime']); $repeats_every = get_post_meta($event['post_id'], 'event_repeating', true); $events_show_duration = TMM::get_option('events_show_duration'); if ($events_show_duration) { $event_duration_sec = TMM_Event::get_event_duration($event['start_mktime'], $ev_end_mktime); $duration_hh = $event_duration_sec[0]; $duration_mm = $event_duration_sec[1]; } if ($event_allday == 1) { $event_start_time = ''; $event_end_time = ''; } else { $event_start_time = TMM_Event::get_event_time($event['start_mktime']); $event_end_time = TMM_Event::get_event_time($ev_end_mktime); } ?> <div class="entry-meta"> <h2 class="entry-title"><a href="<?php echo $event['url'];
<?php } ?> <?php $event_allday = get_post_meta($post->ID, 'event_allday', true); $hide_event_place = get_post_meta($post->ID, 'hide_event_place', true); $event_place_address = get_post_meta($post->ID, 'event_place_address', true); $ev_mktime = (int) get_post_meta($post->ID, 'ev_mktime', true); $event_date = TMM_Event::get_event_date($ev_mktime); $ev_end_mktime = (int) get_post_meta($post->ID, 'ev_end_mktime', true); $event_end_date = TMM_Event::get_event_date($ev_end_mktime); $repeats_every = get_post_meta($post->ID, 'event_repeating', true); $events_show_duration = TMM::get_option('events_show_duration'); if ($events_show_duration) { $event_duration_sec = TMM_Event::get_event_duration($ev_mktime, $ev_end_mktime); $duration_hh = $event_duration_sec[0]; $duration_mm = $event_duration_sec[1]; } if ($event_allday == 1) { $event_start_time = ''; $event_end_time = ''; } else { $event_start_time = TMM_Event::get_event_time($ev_mktime); $event_end_time = TMM_Event::get_event_time($ev_end_mktime); } $e_category = get_the_term_list($post->ID, 'events-categories', '', ', ', ''); ?> <div class="event-details"> <div class="event-start">
public static function get_events($start, $end, $category = 0) { global $wpdb; $start = (int) $start; $end = (int) $end; $category = (int) $category; $current_year = (int) date('Y', $start); $current_month = (int) date('m', $start) + 1; $data = array(); //$google_events = self::sync_Google_calendar_events();//for update $result = $wpdb->get_results("\n\t\t\tSELECT SQL_CALC_FOUND_ROWS p.ID , p.post_title, p.post_excerpt\n\t\t\tFROM {$wpdb->posts} p " . ($category > 0 ? "INNER JOIN {$wpdb->term_relationships} tr ON (p.ID = tr.object_id) " : "") . "INNER JOIN {$wpdb->postmeta} pm\n\t\t\t\tON (p.ID = pm.post_id) \n\t\t\tINNER JOIN {$wpdb->postmeta} AS mt1 \n\t\t\t\tON (p.ID = mt1.post_id) \n\t\t\tWHERE " . ($category > 0 ? "tr.term_taxonomy_id IN ( {$category} ) " : "1=1 ") . " \n\t\t\t\tAND p.post_type = 'event'\n\t\t\t\tAND ((p.post_status = 'publish'))\n\t\t\t\tAND (\n\t\t\t\t\t(pm.meta_key = 'event_repeating' AND CAST(pm.meta_value AS CHAR) != 'no_repeat')\n\t\t\t\t\tOR\n\t\t\t\t\t(mt1.meta_key = 'ev_end_mktime' AND CAST(mt1.meta_value AS CHAR) > '{$start}')\n\t\t\t\t) \n\t\t\tGROUP BY p.ID \n\t\t\tORDER BY p.post_date DESC\n\t\t", OBJECT_K); if (!empty($result)) { foreach ($result as $post) { $events_data = array(); $post_meta = get_post_meta($post->ID); $start_date = (int) $post_meta['ev_mktime'][0]; $end_date = (int) $post_meta['ev_end_mktime'][0]; $place_address = $post_meta['event_place_address'][0]; $repeating = $post_meta['event_repeating'][0]; $featured_image_src = ''; $duration_sec = TMM_Event::get_event_duration($start_date, $end_date); $duration_sec = $duration_sec[2]; if ($end && $start_date > $end) { continue; } $featured_image_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail'); if ($featured_image_src) { $featured_image_src = $featured_image_src[0]; } else { $featured_image_src = ''; } if ($repeating !== 'no_repeat') { $event_year = (int) date('Y', $start_date); $event_month = (int) date('m', $start_date); switch ($repeating) { case 'week': case '2week': case '3week': //if ($current_year > $event_year || ($current_year == $event_year && $current_month >= $event_month-1) ) { $repeating_week = unserialize($post_meta['event_repeating_week'][0]); $start_day_number = (int) date('N', $start_date); /* mon-1, .., sun-7 */ $day_duration_sec = 60 * 60 * 24; $diff = 7 - $start_day_number; $tmp_start = $start; if (is_array($repeating_week) && count($repeating_week)) { foreach ($repeating_week as $key => $value) { $value = $value + 1; /* mon-1, .., sun-7 */ $day_distance = $diff + $value; $day_distance = $day_distance >= 7 ? $day_distance - 7 : $day_distance; $tmp_start = $start_date + $day_duration_sec * $day_distance; $temp_date = $end_date > $end ? $end : $end_date; $i = 1; $k = 2; $j = 3; while ($tmp_start < $temp_date) { $skip = false; if ($repeating === '2week' && $i % 2 == 0) { $skip = true; } if ($repeating === '3week') { if ($i == $k) { $k += 3; $skip = true; } if ($i == $j) { $j += 3; $skip = true; } } if (!$skip) { $events_data[] = array('start' => $tmp_start, 'end' => $tmp_start + $duration_sec); } $tmp_start += $day_duration_sec * 7; $i++; } } } //} break; case 'month': //if ($current_year > $event_year || ($current_year == $event_year && $current_month >= $event_month-1) ) { if ($current_month > $event_month) { $start_date = mktime((int) date('H', $start_date), (int) date('i', $start_date), 0, $current_month - 1, (int) date('j', $start_date), $current_year, -1); if ($start_date <= $end_date) { $events_data[] = array('start' => $start_date, 'end' => $start_date + $duration_sec); } } if ($current_month >= $event_month) { $start_date = mktime((int) date('H', $start_date), (int) date('i', $start_date), 0, $current_month, (int) date('j', $start_date), $current_year, -1); if ($start_date <= $end_date) { $events_data[] = array('start' => $start_date, 'end' => $start_date + $duration_sec); } } if ($current_month >= $event_month - 1) { $start_date = mktime((int) date('H', $start_date), (int) date('i', $start_date), 0, $current_month + 1, (int) date('j', $start_date), $current_year, -1); if ($start_date <= $end_date) { $events_data[] = array('start' => $start_date, 'end' => $start_date + $duration_sec); } } //} break; case 'year': //if ($current_year >= $event_year && $current_month == $event_month) { $start_date = mktime((int) date('H', $start_date), (int) date('i', $start_date), 0, (int) date('n', $start_date), (int) date('j', $start_date), $current_year, -1); $events_data[] = array('start' => $start_date, 'end' => $start_date + $duration_sec); //} break; default: break; } } else { $events_data[] = array('start' => $start_date, 'end' => $end_date); } foreach ($events_data as $key => $value) { if ($value['end'] < $start) { continue; } $data[] = array('id' => uniqid(), 'post_id' => $post->ID, 'title' => $post->post_title, 'start' => date("Y-m-d H:i", $value['start']), 'end' => date("Y-m-d H:i", $value['end']), 'start_mktime' => $value['start'], 'end_mktime' => $value['end'], 'event_place_address' => $place_address, 'featured_image_src' => $featured_image_src, 'post_excerpt' => $post->post_excerpt, 'allDay' => 0, 'url' => get_permalink($post->ID)); } } } return $data; }