/** * Add custom recurrence dates. */ private function add_custom_dates($post_id, $dates, $all_day, $separate_end_date, $start, $end) { $custom_dates = $separates = array(); $diff = strtotime($end) - strtotime($start); $em_helper = new Events_Maker_Helper(); // is it all day long event? if ($all_day === 1) { foreach ($dates as $id => $date) { if (isset($separate_end_date[$id])) { if ($em_helper->is_valid_date($date['start']['date']) && $em_helper->is_valid_date($date['end']['date']) && $em_helper->is_after_date($date['end']['date'], $date['start']['date'], false)) { $separates[] = true; $custom_dates[] = array('start' => $date['start']['date'] . ' 00:00:00', 'end' => $date['end']['date'] . ' 00:00:00'); } } else { if ($em_helper->is_valid_date($date['start']['date'])) { $separates[] = false; $custom_dates[] = array('start' => $date['start']['date'] . ' 00:00:00', 'end' => date('Y-m-d', strtotime($date['start']['date']) + $diff) . ' 00:00:00'); } } } } else { foreach ($dates as $id => $date) { if (isset($separate_end_date[$id])) { if ($em_helper->is_valid_date($date['start']['date']) && $em_helper->is_valid_date($date['end']['date']) && $em_helper->is_valid_time($date['start']['time']) && $em_helper->is_valid_time($date['end']['time']) && $em_helper->is_after_date($date['end']['date'] . ' ' . $date['end']['time'], $date['start']['date'] . ' ' . $date['start']['time'], false)) { $separates[] = true; $custom_dates[] = array('start' => date('Y-m-d H:i:s', strtotime($date['start']['date'] . ' ' . $date['start']['time'])), 'end' => date('Y-m-d H:i:s', strtotime($date['end']['date'] . ' ' . $date['end']['time']))); } } else { if ($em_helper->is_valid_date($date['start']['date']) && $em_helper->is_valid_time($date['start']['time'])) { $time = strtotime($date['start']['date'] . ' ' . $date['start']['time']); $separates[] = false; $custom_dates[] = array('start' => date('Y-m-d H:i:s', $time), 'end' => date('Y-m-d H:i:s', $time + $diff)); } } } } if (!empty($custom_dates)) { global $wpdb; $query = array(); foreach ($custom_dates as $date) { $query[] = "(" . $post_id . ", '_event_occurrence_date', '" . $date['start'] . "|" . $date['end'] . "')"; } if (!empty($query)) { $wpdb->query('INSERT INTO ' . $wpdb->postmeta . ' (post_id, meta_key, meta_value) VALUES ' . implode(', ', $query)); } array_multisort($custom_dates); // get last occurrence $last = end($custom_dates); // add last occurrence add_post_meta($post_id, '_event_occurrence_last_date', $last['start'] . '|' . $last['end']); } else { // add last occurrence (same as first) add_post_meta($post_id, '_event_occurrence_last_date', $start . '|' . $end); } return $separates; }