function my_calendar_save($action, $output, $event_id = false) { global $wpdb, $event_author; $mcdb = $wpdb; $proceed = $output[0]; $message = ''; $formats = array('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%f', '%f'); if (($action == 'add' || $action == 'copy') && $proceed == true) { $add = $output[2]; // add format here $add = apply_filters('mc_before_save_insert', $add); // this db write takes most of the processing time for this process. $result = $mcdb->insert(my_calendar_table(), $add, $formats); $event_id = $mcdb->insert_id; mc_increment_event($event_id); if (!$result) { $message = "<div class='error notice'><p><strong>" . __('Error', 'my-calendar') . ":</strong> " . __('I\'m sorry! I couldn\'t add that event to the database.', 'my-calendar') . "</p></div>"; } else { // do an action using the $action and processed event data $data = $add; $event_error = ''; do_action('mc_save_event', $action, $data, $event_id, $result); // Call mail function if (get_option('mc_event_mail') == 'true') { $event = mc_get_first_event($event_id); // insert_id is last occurrence inserted in the db my_calendar_send_email($event); } if ($add['event_approved'] == 0) { $message = "<div class='updated notice'><p>" . __('Event saved. An administrator will review and approve your event.', 'my-calendar') . "</p></div>"; } else { if (function_exists('jd_doTwitterAPIPost') && isset($_POST['mc_twitter']) && trim($_POST['mc_twitter']) != '') { jd_doTwitterAPIPost(stripslashes($_POST['mc_twitter'])); } if (get_option('mc_uri') != '') { $event_ids = mc_get_occurrences($event_id); //$event_link = mc_build_url( array( 'mc_id' => $event_ids[0]->occur_id ), array( 'page' ), get_option( 'mc_uri' ) ); //$event_link = add_query_arg( 'mc_id', $event_ids[0]->occur_id, get_option( 'mc_uri' ) ); $event_link = mc_get_details_link($event_ids[0]->occur_id); $event_error = mc_error_check($event_ids[0]->occur_event_id); } else { $event_link = false; } if ($event_error != '') { $message = $event_error; } else { $message = "<div class='updated notice'><p>" . __('Event added. It will now show on the calendar.', 'my-calendar'); if ($event_link !== false) { $message .= sprintf(__(' <a href="%s">View Event</a>', 'my-calendar'), $event_link); } $message .= "</p></div>"; } } mc_delete_cache(); } } if ($action == 'edit' && $proceed == true) { $current_user = wp_get_current_user(); $result = true; $url = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? '' . sprintf(__('View <a href="%s">your calendar</a>.', 'my-calendar'), get_option('mc_uri')) : ''; if (mc_can_edit_event($event_id)) { $update = $output[2]; $update = apply_filters('mc_before_save_update', $update, $event_id); $endtime = date("H:i:00", strtotime($update['event_endtime'])); $date_changed = $update['event_begin'] != $_POST['prev_event_begin'] || date("H:i:00", strtotime($update['event_time'])) != $_POST['prev_event_time'] || $update['event_end'] != $_POST['prev_event_end'] || $endtime != $_POST['prev_event_endtime'] && ($_POST['prev_event_endtime'] != '' && $endtime != '23:59:59') ? true : false; if (isset($_POST['event_instance'])) { $is_changed = mc_compare($update, $event_id); // compares the information sent to the information saved for a given event. $event_instance = (int) $_POST['event_instance']; if ($is_changed) { // if changed, create new event, match group id, update instance to reflect event connection, same group id. // if group ID == 0, need to add group ID to both records. // if a single instance is edited, it should *not* inherit the recurring settings from parent. $update['event_recur'] = 'S1'; if ($update['event_group_id'] == 0) { $update['event_group_id'] = $event_id; mc_update_data($event_id, 'event_group_id', $event_id); } $mcdb->insert(my_calendar_table(), $update, $formats); $new_event = $mcdb->insert_id; // need to get this variable into URL for form submit $result = mc_update_instance($event_instance, $new_event, $update); mc_delete_cache(); } else { if ($update['event_begin'][0] == $_POST['prev_event_begin'] && $update['event_end'][0] == $_POST['prev_event_end']) { // There were no changes at all. } else { $result = mc_update_instance($event_instance, $event_id, $update); // Only dates were changed $message = "<div class='updated notice'><p>" . __('Date/time information for this event has been updated.', 'my-calendar') . " {$url}</p></div>"; mc_delete_cache(); } } } else { $result = $mcdb->update(my_calendar_table(), $update, array('event_id' => $event_id), $formats, '%d'); $recur_changed = $update['event_repeats'] != $_POST['prev_event_repeats'] || $update['event_recur'] != $_POST['prev_event_recur'] ? true : false; if ($date_changed || $recur_changed) { // TODO: if date or recur changed, do generation of new instances, then iterate over existing occurrences // to update & delete remaining mc_delete_instances($event_id); mc_increment_event($event_id); mc_delete_cache(); } } $data = $update; do_action('mc_save_event', $action, $data, $event_id, $result); if ($result === false) { $message = "<div class='error'><p><strong>" . __('Error', 'my-calendar') . ":</strong>" . __('Your event was not updated.', 'my-calendar') . " {$url}</p></div>"; } else { // do an action using the $action and processed event data $event_approved = isset($_POST['event_approved']) ? intval($_POST['event_approved']) : 0; do_action('mc_transition_event', (int) $_POST['prev_event_status'], $event_approved); $message = "<div class='updated'><p>" . __('Event updated successfully', 'my-calendar') . ". {$url}</p></div>"; mc_delete_cache(); } } else { $message = "<div class='error'><p><strong>" . __('You do not have sufficient permissions to edit that event.', 'my-calendar') . "</strong></p></div>"; } } $message = $message . "\n" . $output[3]; return array('event_id' => $event_id, 'message' => $message); }
function my_event_post($action, $data, $new_event) { if (!get_option('mcs_create_post') == 'true') { return; } // if the event save was successful. $options = get_option('mcs_event_post'); switch ($options['content']) { case 'event': $content = "[my_calendar_event event='{$new_event}' template='details' list='']"; break; case 'custom': $content = isset($_POST['mcs_custom_content']) ? $_POST['mcs_custom_content'] : ''; break; default: $content = $data['event_desc']; break; } if ($options['content'] == 'custom') { $event = mc_get_first_event($new_event); $details = mc_create_tags($event); $content = jd_draw_template($details, apply_filters('mcs_new_post_template', $content, $event)); } switch ($options['title']) { case 'custom': $title = sprintf($options['custom_title'], $data['event_title']); break; default: $title = $data['event_title']; } switch ($options['author']) { case 'host': $auth = $data['event_host']; break; default: $auth = $data['event_author']; } switch ($options['excerpt']) { case 'event_short': $excerpt = $data['event_short']; break; case 'auto': $excerpt = wp_trim_words($data['event_desc']); break; case 'custom': $excerpt = isset($_POST['mcs_custom_content']) ? $_POST['mcs_custom_content'] : ''; break; default: $excerpt = $data['event_short']; } if ($options['excerpt'] == 'custom') { $event = mc_get_first_event($new_event); $details = mc_create_tags($event); $excerpt = jd_draw_template($details, apply_filters('mcs_new_post_template', $excerpt, $event)); } $status = isset($options['status']) ? $options['status'] : 'publish'; switch ($options['timestamp']) { case 'event': $date = strtotime($data['event_begin'] . ' ' . $data['event_time']); break; case 'custom': if ($options['custom_time'] < 0) { $date = strtotime($data['event_begin'] . ' ' . $data['event_time']) - intval($options['custom_time']); } else { $date = current_time('timestamp') + intval($options['custom_time']); } break; default: $date = current_time('timestamp'); } $type = isset($options['post_type']) ? $options['post_type'] : 'post'; if ($action == 'add' && !(isset($_POST['event_source']) && $_POST['event_source'] == 'post')) { $my_post = array('post_title' => $title, 'post_content' => $content, 'post_excerpt' => $excerpt, 'post_status' => $status, 'post_author' => $auth, 'post_name' => sanitize_title($title), 'post_date' => date('Y-m-d H:i:s', $date), 'post_type' => $type); $post_id = wp_insert_post($my_post); $attachment_id = isset($_POST['event_image_id']) && is_numeric($_POST['event_image_id']) ? $_POST['event_image_id'] : false; if ($attachment_id) { set_post_thumbnail($post_id, $attachment_id); } $category = mc_get_category_detail($data['event_category'], 'category_name'); $taxonomy = 'category'; wp_set_post_tags($post_id, $category); wp_set_post_terms($post_id, $category, $taxonomy); add_post_meta($post_id, '_mc_event_id', $new_event); $event = mc_get_first_event($new_event); $event_id = $event->event_post; add_post_meta($event_id, '_mc_related_post', $post_id); do_action('mcp_post_published', $post_id, $event); wp_publish_post($post_id); } }
function mc_hidden_event() { $do_redirect = false; if (isset($_GET['mc_id'])) { $mc_id = intval($_GET['mc_id']); $event = mc_get_event($mc_id, 'object'); if (mc_event_is_hidden($event)) { $do_redirect = true; } } else { global $wp_query; $slug = $wp_query->query_vars['name']; $status = get_page_by_path($slug, OBJECT, 'mc-events'); if ($status) { $post = $status; } else { return; } if (is_object($post) && $post->post_type == 'mc-events') { $event_id = get_post_meta($post->ID, '_mc_event_id', true); if (!$event_id) { return; } $event = mc_get_first_event($event_id); if (mc_event_is_hidden($event)) { $do_redirect = true; } } } if ($do_redirect) { $id = get_option('mc_uri_id'); $uri = get_option('mc_uri'); if ($id) { $uri = get_permalink($id); } wp_safe_redirect($uri); } }
function mc_show_event_template($content) { global $post; if (is_object($post) && in_the_loop()) { // some early versions of this placed the shortcode into the post content. Strip that out. $new_content = $content; if ($post->post_type == 'mc-events') { if (isset($_GET['mc_id'])) { $mc_id = intval($_GET['mc_id']); $event_id = get_post_meta($post->ID, '_mc_event_id', true); $event = mc_get_event($mc_id, 'object'); $date = date('Y-m-d', strtotime($event->occur_begin)); $time = date('H:i:00', strtotime($event->occur_begin)); } else { $event_id = get_post_meta($post->ID, '_mc_event_id', true); $event = mc_get_first_event($event_id); $date = $event->event_begin; $time = $event->event_time; } if (mc_event_is_hidden($event)) { return $content; } if (get_option('mc_use_details_template') == 1) { $new_content = apply_filters('mc_before_event', '', $event, 'single', $time); if (isset($_GET['mc_id'])) { $shortcode = str_replace("event='{$event_id}'", "event='{$mc_id}' instance='1'", get_post_meta($post->ID, '_mc_event_shortcode', true)); } else { $shortcode = get_post_meta($post->ID, '_mc_event_shortcode', true); } $new_content .= do_shortcode(apply_filters('mc_single_event_shortcode', $shortcode)); $new_content .= apply_filters('mc_after_event', '', $event, 'single', $time); } else { $new_content = my_calendar_draw_event($event, 'single', $date, $time, ''); } $content = do_shortcode(apply_filters('mc_event_post_content', $new_content, $content, $post)); } } return $content; }
function my_calendar_save($action, $output, $event_id = false) { global $wpdb, $event_author; $mcdb = $wpdb; $proceed = $output[0]; $message = ''; $formats = array('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%f', '%f'); if (($action == 'add' || $action == 'copy') && $proceed == true) { $add = $output[2]; // add format here $add = apply_filters('mc_before_save_insert', $add); $result = $mcdb->insert(my_calendar_table(), $add, $formats); $event_id = $mcdb->insert_id; mc_increment_event($event_id); if (!$result) { $message = "<div class='error notice'><p><strong>" . __('Error', 'my-calendar') . ":</strong> " . __('I\'m sorry! I couldn\'t add that event to the database.', 'my-calendar') . "</p></div>"; } else { // do an action using the $action and processed event data $data = $add; do_action('mc_save_event', $action, $data, $event_id, $result); // Call mail function if (get_option('mc_event_mail') == 'true') { $event = mc_get_first_event($event_id); // insert_id is last occurrence inserted in the db my_calendar_send_email($event); } if ($add['event_approved'] == 0) { $message = "<div class='updated notice'><p>" . __('Event saved. An administrator will review and approve your event.', 'my-calendar') . "</p></div>"; } else { if (function_exists('jd_doTwitterAPIPost') && isset($_POST['mc_twitter']) && trim($_POST['mc_twitter']) != '') { jd_doTwitterAPIPost(stripslashes($_POST['mc_twitter'])); } if (get_option('mc_uri') != '') { $event_ids = mc_get_occurrences($event_id); $event_link = mc_build_url(array('mc_id' => $event_ids[0]->occur_id), array('page'), get_option('mc_uri')); } else { $event_link = false; } $message = "<div class='updated notice'><p>" . __('Event added. It will now show on the calendar.', 'my-calendar'); if ($event_link !== false) { $message .= sprintf(__(' <a href="%s">View Event</a>', 'my-calendar'), $event_link); } $message .= "</p></div>"; } mc_delete_cache(); } } if ($action == 'edit' && $proceed == true) { $result = true; $url = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? '' . sprintf(__('View <a href="%s">your calendar</a>.', 'my-calendar'), get_option('mc_uri')) : ''; $event_author = (int) $_POST['event_author']; if (mc_can_edit_event($event_author)) { $update = $output[2]; $update = apply_filters('mc_before_save_update', $update, $event_id); $date_changed = $update['event_begin'] != $_POST['prev_event_begin'] || date("H:i:00", strtotime($update['event_time'])) != $_POST['prev_event_time'] || $update['event_end'] != $_POST['prev_event_end'] || date("H:i:00", strtotime($update['event_endtime'])) != $_POST['prev_event_endtime'] && ($_POST['prev_event_endtime'] != '' && date("H:i:00", strtotime($update['event_endtime'])) != '00:00:00') ? true : false; if (isset($_POST['event_instance'])) { $is_changed = mc_compare($update, $event_id); // compares the information sent to the information saved for a given event. $event_instance = (int) $_POST['event_instance']; if ($is_changed) { // if changed, create new event, match group id, update instance to reflect event connection, same group id. // if group ID == 0, need to add group ID to both records. if ($update['event_group_id'] == 0) { $update['event_group_id'] = $event_id; mc_update_data($event_id, 'event_group_id', $event_id); } $mcdb->insert(my_calendar_table(), $update, $formats); $new_event = $mcdb->insert_id; // need to get this variable into URL for form submit $result = mc_update_instance($event_instance, $new_event, $update); mc_delete_cache(); } else { if ($update['event_begin'][0] == $_POST['prev_event_begin'] && $update['event_end'][0] == $_POST['prev_event_end']) { // There were no changes at all. } else { $result = mc_update_instance($event_instance, $event_id, $update); // Only dates were changed $message = "<div class='updated notice'><p>" . __('Date/time information for this event has been updated.', 'my-calendar') . "{$url}</p></div>"; mc_delete_cache(); } } } else { $result = $mcdb->update(my_calendar_table(), $update, array('event_id' => $event_id), $formats, '%d'); $recur_changed = $update['event_repeats'] != $_POST['prev_event_repeats'] || $update['event_recur'] != $_POST['prev_event_recur'] ? true : false; if ($date_changed || $recur_changed) { mc_delete_instances($event_id); mc_increment_event($event_id); mc_delete_cache(); } } $data = $update; do_action('mc_save_event', $action, $data, $event_id, $result); if ($result === false) { $message = "<div class='error'><p><strong>" . __('Error', 'my-calendar') . ":</strong>" . __('Your event was not updated.', 'my-calendar') . "{$url}</p></div>"; } else { // do an action using the $action and processed event data do_action('mc_transition_event', (int) $_POST['prev_event_status'], (int) $_POST['event_approved']); $message = "<div class='updated'><p>" . __('Event updated successfully', 'my-calendar') . ".{$url}</p></div>"; mc_delete_cache(); } } else { $message = "<div class='error'><p><strong>" . __('You do not have sufficient permissions to edit that event.', 'my-calendar') . "</strong></p></div>"; } } if ($action == 'delete') { // Deal with deleting an event from the database if (empty($event_id)) { $message = "<div class='error'><p><strong>" . __('Error', 'my-calendar') . ":</strong>" . __("You can't delete an event if you haven't submitted an event id", 'my-calendar') . "</p></div>"; } else { $post_id = mc_get_data('event_post', $event_id); if (empty($_POST['event_instance'])) { $sql = "DELETE FROM " . my_calendar_table() . " WHERE event_id='" . (int) $event_id . "'"; $delete_occurrences = "DELETE FROM " . my_calendar_event_table() . " WHERE occur_event_id = " . (int) $event_id; $mcdb->query($delete_occurrences); $mcdb->query($sql); $sql = "SELECT event_id FROM " . my_calendar_table() . " WHERE event_id='" . (int) $event_id . "'"; $result = $mcdb->get_results($sql); } else { $delete = "DELETE FROM " . my_calendar_event_table() . " WHERE occur_id = " . (int) $_POST['event_instance']; $result = $mcdb->get_results($delete); } if (empty($result) || empty($result[0]->event_id)) { mc_delete_cache(); // do an action using the event_id do_action('mc_delete_event', $event_id, $post_id); $message = "<div class='updated'><p>" . __('Event deleted successfully', 'my-calendar') . "</p></div>"; } else { $message = "<div class='error'><p><strong>" . __('Error', 'my-calendar') . ":</strong>" . __('Despite issuing a request to delete, the event still remains in the database. Please investigate.', 'my-calendar') . "</p></div>"; } } } $message = $message . "\n" . $output[3]; return array('event_id' => $event_id, 'message' => $message); }
function mc_save_event_post($id) { $post_types = is_array(get_option('mcs_post_event_types')) ? get_option('mcs_post_event_types') : array(); $is_valid_type = !empty($post_types) && in_array(get_post_type($id), $post_types) ? true : false; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE || wp_is_post_revision($id) || !$is_valid_type) { return $id; } if (isset($_POST['event_nonce_name']) && isset($_POST['event_source']) && $_POST['event_source'] == 'post') { if (!isset($_POST['event_title']) || empty($_POST['event_title'])) { return $id; } $post = $_POST; if (isset($_POST['event_desc'])) { $post['content'] = $_POST['event_desc']; } else { $post['content'] = ''; } $attach_id = get_post_thumbnail_id($id); $featured_image = wp_get_attachment_url($attach_id); if (isset($_POST['post_author_override'])) { $_POST['event_author'] = intval($_POST['post_author_override']); } else { $_POST['event_author'] = get_current_user_id(); } $check = mc_check_data('add', $post, 0); if ($check[0]) { $response = my_calendar_save('add', $check); $event_id = $response['event_id']; $response = $response['message']; $event = mc_get_first_event($event_id); $post_id = $event->event_post; set_post_thumbnail($post_id, $attach_id); mc_update_data($event_id, 'event_image', $featured_image, '%s'); update_post_meta($id, '_mc_new_event', $response); update_post_meta($id, '_mc_generated_event', $event_id); } } return $id; }