Пример #1
0
 /**
  * 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;
 }