function mc_increment_event($id, $post = array(), $test = false) { global $wpdb; $event = mc_get_event_core($id); $data = array(); if (empty($post)) { $orig_begin = $event->event_begin . ' ' . $event->event_time; $orig_end = $event->event_end . ' ' . $event->event_endtime; } else { $orig_begin = @$post['event_begin'] . ' ' . @$post['event_time']; $orig_end = @$post['event_end'] . ' ' . @$post['event_endtime']; } $group_id = $event->event_group_id; $format = array('%d', '%s', '%s', '%d'); $recurs = str_split($event->event_recur, 1); $recur = $recurs[0]; $every = isset($recurs[1]) ? $recurs[1] : 1; if ($recur != "S") { // if this event had a rep of 0, translate that. $event_repetition = $event->event_repeats != 0 ? $event->event_repeats : _mc_increment_values($recur); $numforward = (int) $event_repetition; if ($recur != 'S') { switch ($recur) { case "D": case "E": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * $every, 0, 0); $end = my_calendar_add_date($orig_end, $i * $every, 0, 0); if ($recur == 'E' && (date('w', $begin) != 0 && date('w', $begin) != 6) || $recur == 'D') { $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } else { $numforward++; } } break; case "W": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * 7 * $every, 0, 0); $end = my_calendar_add_date($orig_end, $i * 7 * $every, 0, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "B": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * 14, 0, 0); $end = my_calendar_add_date($orig_end, $i * 14, 0, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "M": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, 0, $i * $every, 0); $end = my_calendar_add_date($orig_end, 0, $i * $every, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "U": //important to keep track of which date variables are strings and which are timestamps $week_of_event = week_of_month(date('d', strtotime($event->event_begin))); $newbegin = my_calendar_add_date($orig_begin, 28, 0, 0); $newend = my_calendar_add_date($orig_end, 28, 0, 0); $fifth_week = $event->event_fifth_week; $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', strtotime($orig_begin)), 'occur_end' => date('Y-m-d H:i:s', strtotime($orig_end)), 'occur_group_id' => $group_id); if ($test == 'test') { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } $numforward = $numforward - 1; for ($i = 0; $i <= $numforward; $i++) { $next_week_diff = date('m', $newbegin) == date('m', my_calendar_add_date(date('Y-m-d', $newbegin), 7, 0, 0)) ? false : true; $move_event = $fifth_week == 1 && $week_of_event == week_of_month(date('d', $newbegin)) + 1 && $next_week_diff == true ? true : false; if ($week_of_event == week_of_month(date('d', $newbegin)) || $move_event == true) { // continue; } else { $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 7, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 7, 0, 0); $move_event = $fifth_week == 1 && $week_of_event == week_of_month(date('d', $newbegin)) + 1 ? true : false; if ($week_of_event == week_of_month(date('d', $newbegin)) || $move_event == true) { // continue; } else { $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 14, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 14, 0, 0); } } $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $newbegin), 'occur_end' => date('Y-m-d H:i:s', $newend), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 28, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 28, 0, 0); } break; case "Y": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, 0, 0, $i * $every); $end = my_calendar_add_date($orig_end, 0, 0, $i * $every); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; } } } else { $begin = strtotime($orig_begin); $end = strtotime($orig_end); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); // Logic shift -- should not have any need to verify occurrences. //$occurs = $wpdb->get_results("SELECT * FROM ".my_calendar_event_table()." WHERE occur_event_id = $id ORDER BY occur_begin DESC"); if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } return $data; }
function mc_event_date_span($group_id, $event_span, $dates = array()) { global $wpdb; $mcdb = $wpdb; // cache as transient to save db queries. if (get_transient('mc_event_date_span_' . $group_id . '_' . $event_span)) { return get_transient('mc_event_date_span_' . $group_id . '_' . $event_span); } if (get_option('mc_remote') == 'true' && function_exists('mc_remote_db')) { $mcdb = mc_remote_db(); } $group_id = (int) $group_id; if ($group_id == 0 && $event_span != 1) { return $dates; } else { $sql = "SELECT occur_begin, occur_end FROM " . my_calendar_event_table() . " WHERE occur_group_id = {$group_id} ORDER BY occur_begin ASC"; $dates = $mcdb->get_results($sql); set_transient('mc_event_date_span_' . $group_id . '_' . $event_span, $dates, HOUR_IN_SECONDS); return $dates; } }
function mc_migrate_db() { global $wpdb; // this function migrates the DB from version 1.10.x to version 2.0. $tables = $wpdb->get_results("show tables;"); foreach ($tables as $table) { foreach ($table as $value) { if ($value == my_calendar_event_table()) { $count = $wpdb->get_var('SELECT count(1) from ' . my_calendar_event_table()); $count2 = $wpdb->get_var('SELECT count(1) from ' . my_calendar_table()); if ($count2 > 0 && $count > 0) { return; } if ($count2 == 0 && $count == 0) { return; // no events, migration unnecessary } break 2; } } } // 2) create new occurrences database, if necessary //dbDelta($initial_occur_db); // 3) migrate events $sql = "SELECT event_id, event_begin, event_time, event_end, event_endtime FROM " . my_calendar_table(); $events = $wpdb->get_results($sql); foreach ($events as $event) { // assign endtimes to all events if ($event->event_endtime == '00:00:00' && $event->event_time != '00:00:00') { $event->event_endtime = date('H:i:s', strtotime("{$event->event_time} +1 hour")); mc_flag_event($event->event_id, $event->event_endtime); } $dates = array('event_begin' => $event->event_begin, 'event_end' => $event->event_end, 'event_time' => $event->event_time, 'event_endtime' => $event->event_endtime); mc_increment_event($event->event_id, $dates); } }
function mc_related_events($id, $return = false) { global $wpdb; $id = (int) $id; if ($id === 0 && $return === false) { echo "<li>" . __('No related events', 'my-calendar') . "</li>"; return; } if ($id === 0 && $return) { return array(); } $output = ''; $sql = "SELECT * FROM " . my_calendar_event_table() . " WHERE occur_group_id={$id}"; $results = $wpdb->get_results($sql); if ($return) { return $results; } if (is_array($results) && !empty($results)) { foreach ($results as $result) { $event = $result->occur_event_id; $current = "<a href='" . admin_url('admin.php?page=my-calendar') . "&mode=edit&event_id={$event}'>"; $end = "</a>"; $begin = date_i18n(get_option('mc_date_format'), strtotime($result->occur_begin)) . ', ' . date(get_option('mc_time_format'), strtotime($result->occur_begin)); $output .= "<li>{$current}{$begin}{$end}</li>"; } } else { $output = "<li>" . __('No related events', 'my-calendar') . "</li>"; } echo $output; }
function mc_instance_list($id, $occur = false, $template = '<h3>{title}</h3>{description}', $list = '<li>{date}, {time}</li>', $before = "<ul>", $after = "</ul>", $instance = false) { global $wpdb; $id = (int) $id; $output = ''; if ($instance == true) { $sql = "SELECT * FROM " . my_calendar_event_table() . " WHERE occur_id={$id}"; } else { $sql = "SELECT * FROM " . my_calendar_event_table() . " WHERE occur_event_id={$id}"; } $results = $wpdb->get_results($sql); if (is_array($results) && is_admin()) { foreach ($results as $result) { $begin = "<span id='occur_date_{$result->occur_id}'>" . date_i18n(get_option('mc_date_format'), strtotime($result->occur_begin)) . ', ' . date(get_option('mc_time_format'), strtotime($result->occur_begin)) . "</span>"; if ($result->occur_id == $occur) { $form_control = ''; $edit = "<em>" . __('Editing Now', 'my-calendar') . "</em>"; } else { $form_control = "{$begin}: <button class='delete_occurrence' type='button' data-value='{$result->occur_id}' aria-describedby='occur_date_{$result->occur_id}' />" . __('Delete', 'my-calendar') . "</button> "; $edit = "<a href='" . admin_url('admin.php?page=my-calendar') . "&mode=edit&event_id={$id}&date={$result->occur_id}' aria-describedby='occur_date_{$result->occur_id}'>" . __('Edit', 'my-calendar') . "</a>"; } $output .= "<li>{$form_control}{$edit}</li>"; } } else { $details = ''; foreach ($results as $result) { $event_id = $result->occur_id; $event = mc_get_event($event_id); $array = mc_create_tags($event); if (in_array($template, array('details', 'grid', 'list', 'mini')) || mc_key_exists($template)) { if (get_option('mc_use_' . $template . '_template') == 1) { $template = mc_get_template($template); } else { if (mc_key_exists($template)) { $template = mc_get_custom_template($template); } else { $details = my_calendar_draw_event($event, $type = "single", $event->event_begin, $event->event_time, ''); } } } $item = $list != '' ? jd_draw_template($array, $list) : ''; if ($details == '') { $details = $template != '' ? jd_draw_template($array, $template) : ''; } $output .= $item; if ($list == '') { break; } } $output = $details . $before . $output . $after; } return get_option('mc_process_shortcodes') == 'true' ? do_shortcode($output) : $output; }
function mc_increment_event($id, $post = array(), $test = false) { global $wpdb; $event = mc_get_event_core($id); $data = array(); if (empty($post)) { $orig_begin = $event->event_begin . ' ' . $event->event_time; $orig_end = $event->event_end . ' ' . $event->event_endtime; } else { $orig_begin = @$post['event_begin'] . ' ' . @$post['event_time']; $orig_end = @$post['event_end'] . ' ' . @$post['event_endtime']; } $group_id = $event->event_group_id; $format = array('%d', '%s', '%s', '%d'); $recurs = str_split($event->event_recur, 1); $recur = $recurs[0]; $every = isset($recurs[1]) ? $recurs[1] : 1; if ($recur != "S") { // if this event had a rep of 0, translate that. $event_repetition = $event->event_repeats != 0 ? $event->event_repeats : _mc_increment_values($recur); $numforward = (int) $event_repetition; if ($recur != 'S') { switch ($recur) { case "D": case "E": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * $every, 0, 0); $end = my_calendar_add_date($orig_end, $i * $every, 0, 0); if ($recur == 'E' && (date('w', $begin) != 0 && date('w', $begin) != 6) || $recur == 'D') { $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } } else { $numforward++; } } break; case "W": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * 7 * $every, 0, 0); $end = my_calendar_add_date($orig_end, $i * 7 * $every, 0, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $sql = $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "B": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, $i * 14, 0, 0); $end = my_calendar_add_date($orig_end, $i * 14, 0, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "M": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, 0, $i * $every, 0); $end = my_calendar_add_date($orig_end, 0, $i * $every, 0); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; case "U": //important to keep track of which date variables are strings and which are timestamps // This pattern handles monthly events by day. //if ( $every != 1 ) { // return an error? // handle patterns that are something *other* than every month /* Idea: use mod to identify which months need to be checked. Check which date in each month. */ //} else { $week_of_event = week_of_month(date('d', strtotime($event->event_begin))); $newbegin = my_calendar_add_date($orig_begin, 28, 0, 0); $newend = my_calendar_add_date($orig_end, 28, 0, 0); $fifth_week = $event->event_fifth_week; $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', strtotime($orig_begin)), 'occur_end' => date('Y-m-d H:i:s', strtotime($orig_end)), 'occur_group_id' => $group_id); /* if ( $test == 'test' && $i > 0 ) { return $data; } */ if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } $numforward = $numforward - 1; for ($i = 0; $i <= $numforward; $i++) { $next_week_diff = date('m', $newbegin) == date('m', my_calendar_add_date(date('Y-m-d', $newbegin), 7, 0, 0)) ? false : true; $move_event = $fifth_week == 1 && $week_of_event == week_of_month(date('d', $newbegin)) + 1 && $next_week_diff == true ? true : false; if ($week_of_event == week_of_month(date('d', $newbegin)) || $move_event == true) { // continue; } else { $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 7, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 7, 0, 0); $move_event = $fifth_week == 1 && $week_of_event == week_of_month(date('d', $newbegin)) + 1 ? true : false; if ($week_of_event == week_of_month(date('d', $newbegin)) || $move_event == true) { // continue; } else { $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 14, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 14, 0, 0); } } $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $newbegin), 'occur_end' => date('Y-m-d H:i:s', $newend), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } $newbegin = my_calendar_add_date(date('Y-m-d H:i:s', $newbegin), 28, 0, 0); $newend = my_calendar_add_date(date('Y-m-d H:i:s', $newend), 28, 0, 0); //} } break; case "Y": for ($i = 0; $i <= $numforward; $i++) { $begin = my_calendar_add_date($orig_begin, 0, 0, $i * $every); $end = my_calendar_add_date($orig_end, 0, 0, $i * $every); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if ($test == 'test' && $i > 0) { return $data; } if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } } break; } } } else { $begin = strtotime($orig_begin); $end = strtotime($orig_end); $data = array('occur_event_id' => $id, 'occur_begin' => date('Y-m-d H:i:s', $begin), 'occur_end' => date('Y-m-d H:i:s', $end), 'occur_group_id' => $group_id); if (!$test) { $wpdb->insert(my_calendar_event_table(), $data, $format); } } return $data; }
function mc_get_search_results($search) { global $wpdb; $mcdb = $wpdb; $event_array = array(); if (get_option('mc_remote') == 'true' && function_exists('mc_remote_db')) { $mcdb = mc_remote_db(); } $before = apply_filters('mc_past_search_results', 0); $after = apply_filters('mc_future_search_results', 15); // return only future events, nearest 10 if (is_array($search)) { // if from & to are set, we need to use an alternate search query $from = $search['from']; $to = $search['to']; $category = isset($search['category']) ? $search['category'] : null; $ltype = isset($search['ltype']) ? $search['ltype'] : null; $lvalue = isset($search['lvalue']) ? $search['lvalue'] : null; $author = isset($search['author']) ? $search['author'] : null; $host = isset($search['host']) ? $search['host'] : null; $search = isset($search['search']) ? $search['search'] : ''; $event_array = my_calendar_events($from, $to, $category, $ltype, $lvalue, 'search', $author, $host, $search); } else { $date = date('Y', current_time('timestamp')) . '-' . date('m', current_time('timestamp')) . '-' . date('d', current_time('timestamp')); // if a value is non-zero, I'll grab a handful of extra events so I can throw out holidays and others like that. if ($before > 0) { $before = $before + 5; $events1 = $mcdb->get_results("SELECT *, UNIX_TIMESTAMP(occur_begin) AS ts_occur_begin, UNIX_TIMESTAMP(occur_end) AS ts_occur_end \r\n\t\t\tFROM " . my_calendar_event_table() . " \r\n\t\t\tJOIN " . my_calendar_table() . " \r\n\t\t\tON (event_id=occur_event_id) \r\n\t\t\tJOIN " . my_calendar_categories_table() . " \r\n\t\t\tON (event_category=category_id) WHERE event_approved = 1 {$search} AND event_flagged <> 1 \r\n\t\t\tAND DATE(occur_begin) < '{$date}' ORDER BY occur_begin DESC LIMIT 0,{$before}"); } else { $events1 = array(); } $events3 = $mcdb->get_results("SELECT *, UNIX_TIMESTAMP(occur_begin) AS ts_occur_begin, UNIX_TIMESTAMP(occur_end) AS ts_occur_end \r\n\t\tFROM " . my_calendar_event_table() . " \r\n\t\tJOIN " . my_calendar_table() . " \r\n\t\tON (event_id=occur_event_id) \r\n\t\tJOIN " . my_calendar_categories_table() . " \r\n\t\tON (event_category=category_id) WHERE event_approved = 1 {$search} AND event_flagged <> 1 \r\n\t\tAND DATE(occur_begin) = '{$date}'"); if ($after > 0) { $after = $after + 5; $events2 = $mcdb->get_results("SELECT *, UNIX_TIMESTAMP(occur_begin) AS ts_occur_begin, UNIX_TIMESTAMP(occur_end) AS ts_occur_end \r\n\t\t\tFROM " . my_calendar_event_table() . " \r\n\t\t\tJOIN " . my_calendar_table() . " \r\n\t\t\tON (event_id=occur_event_id) \r\n\t\t\tJOIN " . my_calendar_categories_table() . " \r\n\t\t\tON (event_category=category_id) WHERE event_approved = 1 {$search} AND event_flagged <> 1 \r\n\t\t\tAND DATE(occur_begin) > '{$date}' ORDER BY occur_begin ASC LIMIT 0,{$after}"); } else { $events2 = array(); } $arr_events = array(); if (!empty($events1) || !empty($events2) || !empty($events3)) { $arr_events = array_merge($events1, $events3, $events2); } if (!get_option('mc_skip_holidays_category') || get_option('mc_skip_holidays_category') == '') { $holidays = array(); } else { $holidays = mc_get_all_holidays($before, $after, 'yes'); $holiday_array = mc_set_date_array($holidays); } if (is_array($arr_events) && !empty($arr_events)) { $no_events = false; $event_array = mc_set_date_array($arr_events); if (is_array($holidays) && count($holidays) > 0) { $event_array = mc_holiday_limit($event_array, $holiday_array); // if there are holidays, rejigger. } } } return $event_array; }
function my_calendar_grab_events($from, $to, $category = null, $ltype = '', $lvalue = '', $source = 'calendar', $author = null, $host = null, $holidays = null, $search = '', $site = false) { global $wpdb; $mcdb = $wpdb; if (get_option('mc_remote') == 'true' && function_exists('mc_remote_db')) { $mcdb = mc_remote_db(); } if ($holidays === null) { if (isset($_GET['mcat'])) { $ccategory = $_GET['mcat']; } else { $ccategory = $category; } } else { $ccategory = $category; } if (isset($_GET['ltype'])) { $cltype = $_GET['ltype']; } else { $cltype = $ltype; } if (isset($_GET['loc'])) { $clvalue = $_GET['loc']; } else { $clvalue = $lvalue; } if (isset($_GET['mc_auth'])) { $clauth = $_GET['mc_auth']; } else { $clauth = $author; } if (isset($_GET['mc_host'])) { $clhost = $_GET['mc_host']; } else { $clhost = $host; } if ($ccategory == '') { $ccategory = 'all'; } if ($clvalue == '') { $clvalue = 'all'; } if ($cltype == '') { $cltype = 'all'; } if ($clvalue == 'all') { $cltype = 'all'; } if ($clauth == '') { $clauth = 'all'; } if ($clhost == '') { $clhost = 'all'; } if (!mc_checkdate($from) || !mc_checkdate($to)) { return array(); } // not valid dates $caching = apply_filters('mc_caching_enabled', false, $ccategory, $ltype, $lvalue, $author, $host); $hash = md5($from . $to . $ccategory . $cltype . $clvalue . $clauth . $clhost); if ($source != 'upcoming') { // no caching on upcoming events by days widgets or lists if ($caching) { $output = mc_check_cache($ccategory, $cltype, $clvalue, $clauth, $clhost, $hash); if ($output && $output != 'empty') { return $output; } if ($output == 'empty') { return array(); } } } $select_category = $ccategory != 'all' ? mc_select_category($ccategory) : ''; $select_author = $clauth != 'all' ? mc_select_author($clauth) : ''; $select_host = $clhost != 'all' ? mc_select_host($clhost) : ''; $select_location = mc_limit_string('grab', $cltype, $clvalue); if ($caching && $source != 'upcoming') { $select_category = ''; $select_location = ''; $select_author = ''; $select_host = ''; } // if caching, then need all categories/locations in cache. UNLESS this is an upcoming events list $arr_events = array(); $limit_string = "event_flagged <> 1 AND event_approved = 1"; $search = mc_prepare_search_query($search); $event_query = "SELECT *, UNIX_TIMESTAMP(occur_begin) AS ts_occur_begin, UNIX_TIMESTAMP(occur_end) AS ts_occur_end\r\n\t\t\t\t\tFROM " . my_calendar_event_table($site) . " \r\n\t\t\t\t\tJOIN " . my_calendar_table($site) . "\r\n\t\t\t\t\tON (event_id=occur_event_id) \t\t\t\t\t\r\n\t\t\t\t\tJOIN " . my_calendar_categories_table($site) . " \r\n\t\t\t\t\tON (event_category=category_id) \r\n\t\t\t\t\tWHERE {$select_category} {$select_location} {$select_author} {$select_host} {$limit_string} {$search} \r\n\t\t\t\t\tAND ( DATE(occur_begin) BETWEEN '{$from} 00:00:00' AND '{$to} 23:59:59' \r\n\t\t\t\t\t\tOR DATE(occur_end) BETWEEN '{$from} 00:00:00' AND '{$to} 23:59:59' \r\n\t\t\t\t\t\tOR ( DATE('{$from}') BETWEEN DATE(occur_begin) AND DATE(occur_end) ) \r\n\t\t\t\t\t\tOR ( DATE('{$to}') BETWEEN DATE(occur_begin) AND DATE(occur_end) ) ) \r\n\t\t\t\t\tORDER BY " . apply_filters('mc_primary_sort', 'occur_begin') . ", " . apply_filters('mc_secondary_sort', 'event_title ASC'); $events = $mcdb->get_results($event_query); if (!empty($events)) { foreach (array_keys($events) as $key) { $event =& $events[$key]; $event->site_id = $site; $arr_events[] = $event; } } if ($source != 'upcoming' && $caching) { $new_cache = mc_create_cache($arr_events, $hash, $category, $ltype, $lvalue, $author, $host); if ($new_cache) { $output = mc_check_cache($ccategory, $cltype, $clvalue, $clauth, $clhost, $hash); return $output; } else { // need to clean cache if the cache is maxed. return mc_clean_cache($arr_events, $ccategory, $cltype, $clvalue, $clauth, $clhost); } } else { return $arr_events; } }
function mc_instance_list($id, $occur = false, $template = '<h3>{title}</h3>{description}', $list = '<li>{date}, {time}</li>', $before = "<ul>", $after = "</ul>") { global $wpdb; $id = (int) $id; $output = ''; $sql = "SELECT * FROM " . my_calendar_event_table() . " WHERE occur_event_id={$id}"; $results = $wpdb->get_results($sql); if (is_array($results) && is_admin()) { foreach ($results as $result) { if ($result->occur_id == $occur) { $form_control = ''; $current = "<em>" . __('Editing: ', 'my-calendar') . "</em>"; $end = ''; } else { $form_control = "<input type='checkbox' name='delete_occurrences[]' id='delete_{$result->occur_id}' value='{$result->occur_id}' aria-labelledby='occur_label occur_date' /> <label id='occur_label' for='delete_{$result->occur_id}'>Delete</label> "; $current = "<a href='" . admin_url('admin.php?page=my-calendar') . "&mode=edit&event_id={$id}&date={$result->occur_id}'>"; $end = "</a>"; } $begin = "<span id='occur_date'>" . date_i18n(get_option('mc_date_format'), strtotime($result->occur_begin)) . ', ' . date(get_option('mc_time_format'), strtotime($result->occur_begin)) . "</span>"; $output .= "<li>{$form_control}{$current}{$begin}{$end}</li>"; } } else { $details = ''; foreach ($results as $result) { $event_id = $result->occur_id; $event = mc_get_event($event_id); $array = mc_create_tags($event); if (in_array($template, array('details', 'grid', 'list', 'mini'))) { if (get_option('mc_use_' . $template . '_template') == 1) { $template = mc_get_template($template); } else { $template = false; $details = my_calendar_draw_event($event, $type = "single", $event->event_begin, $event->event_time, ''); } } $item = $list != '' ? jd_draw_template($array, $list) : ''; if ($details == '') { $details = $template != '' ? jd_draw_template($array, $template) : ''; } $output .= $item; } $output = $details . $before . $output . $after; } return $output; }