function mc_list_events() { global $wpdb; $mcdb = $wpdb; if (current_user_can('mc_approve_events') || current_user_can('mc_manage_events') || current_user_can('mc_add_events')) { $action = !empty($_POST['event_action']) ? $_POST['event_action'] : ''; $event_id = !empty($_POST['event_id']) ? $_POST['event_id'] : ''; if ($action == 'delete') { $message = mc_delete_event($event_id); echo $message; } if (isset($_GET['order'])) { $sortdir = isset($_GET['order']) && $_GET['order'] == 'ASC' ? 'ASC' : 'default'; $sortdir = isset($_GET['order']) && $_GET['order'] == 'DESC' ? 'DESC' : $sortdir; } else { $sortdir = 'default'; } $default_direction = get_option('mc_default_direction') == '' ? 'ASC' : get_option('mc_default_direction'); $sortbydirection = $sortdir == 'default' ? $default_direction : $sortdir; $sortby = isset($_GET['sort']) ? $_GET['sort'] : get_option('mc_default_sort'); if (empty($sortby)) { $sortbyvalue = 'event_begin'; } else { switch ($sortby) { case 1: $sortbyvalue = 'event_ID'; break; case 2: $sortbyvalue = 'event_title'; break; case 3: $sortbyvalue = 'event_desc'; break; case 4: $sortbyvalue = "event_begin {$sortbydirection}, event_time"; break; case 5: $sortbyvalue = 'event_author'; break; case 6: $sortbyvalue = 'event_category'; break; case 7: $sortbyvalue = 'event_label'; break; default: $sortbyvalue = "event_begin {$sortbydirection}, event_time"; } } $sorting = $sortbydirection == 'DESC' ? "&order=ASC" : '&order=DESC'; $allow_filters = true; $status = isset($_GET['limit']) ? $_GET['limit'] : 'all'; $restrict = isset($_GET['restrict']) ? $_GET['restrict'] : 'all'; switch ($status) { case 'all': $limit = ''; break; case 'reserved': $limit = 'WHERE event_approved <> 1'; break; case 'published': $limit = 'WHERE event_approved = 1'; break; default: $limit = ''; } switch ($restrict) { case 'all': $filter = ''; break; case 'where': $filter = isset($_GET['filter']) ? $_GET['filter'] : ''; $restrict = "event_label"; break; case 'author': $filter = isset($_GET['filter']) ? (int) $_GET['filter'] : ''; $restrict = "event_author"; break; case 'category': $filter = isset($_GET['filter']) ? (int) $_GET['filter'] : ''; $restrict = "event_category"; break; case 'flagged': $filter = isset($_GET['filter']) ? (int) $_GET['filter'] : ''; $restrict = "event_flagged"; break; default: $filter = ''; } if (!current_user_can('mc_manage_events') && !current_user_can('mc_approve_events')) { $restrict = 'event_author'; $filter = get_current_user_id(); $allow_filters = false; } $filter = esc_sql(urldecode($filter)); if ($restrict == "event_label") { $filter = "'{$filter}'"; } if ($limit == '' && $filter != '') { $limit = "WHERE {$restrict} = {$filter}"; } else { if ($limit != '' && $filter != '') { $limit .= "AND {$restrict} = {$filter}"; } } if ($filter == '' || !$allow_filters) { $filtered = ""; } else { $filtered = "<span class='dashicons dashicons-no'></span><a href='" . admin_url('admin.php?page=my-calendar-manage') . "'>" . __('Clear filters', 'my-calendar') . "</a>"; } $current = empty($_GET['paged']) ? 1 : intval($_GET['paged']); $user = get_current_user_id(); $screen = get_current_screen(); $option = $screen->get_option('per_page', 'option'); $items_per_page = get_user_meta($user, $option, true); if (empty($items_per_page) || $items_per_page < 1) { $items_per_page = $screen->get_option('per_page', 'default'); } // default limits if ($limit == '') { $limit .= $restrict != 'event_flagged' ? " WHERE event_flagged = 0" : ''; } else { $limit .= $restrict != 'event_flagged' ? " AND event_flagged = 0" : ''; } if (isset($_POST['mcs'])) { $query = $_POST['mcs']; $limit .= mc_prepare_search_query($query); } $limit .= $restrict != 'archived' ? " AND event_status = 1" : ' AND event_status = 0'; $events = $mcdb->get_results("SELECT SQL_CALC_FOUND_ROWS event_id FROM " . my_calendar_table() . " {$limit} ORDER BY {$sortbyvalue} {$sortbydirection} LIMIT " . ($current - 1) * $items_per_page . ", " . $items_per_page); $found_rows = $wpdb->get_col("SELECT FOUND_ROWS();"); $items = $found_rows[0]; if ((function_exists('akismet_http_post') || function_exists('bs_checker')) && $allow_filters) { ?> <ul class="links"> <li> <a <?php echo isset($_GET['restrict']) && $_GET['restrict'] == 'flagged' ? 'class="active-link"' : ''; ?> href="<?php echo admin_url('admin.php?page=my-calendar-manage&restrict=flagged&filter=1'); ?> "><?php _e('Spam', 'my-calendar'); ?> </a> </li> </ul><?php } ?> <div class='mc-search'> <form action="<?php echo esc_url(add_query_arg($_GET, admin_url('admin.php'))); ?> " method="post"> <div><input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('my-calendar-nonce'); ?> "/> </div> <div> <label for="mc_search" class='screen-reader-text'><?php _e('Search', 'my-calendar'); ?> </label> <input type='text' role='search' name='mcs' id='mc_search' value='<?php if (isset($_POST['mcs'])) { esc_attr_e($_POST['mcs']); } ?> '/> <input type='submit' value='<?php _e('Search Events', 'my-calendar'); ?> ' class='button-secondary'/> </div> </form> </div> <?php if (get_option('mc_event_approve') == 'true') { ?> <ul class="links"> <li> <a <?php echo isset($_GET['limit']) && $_GET['limit'] == 'published' ? 'class="active-link"' : ''; ?> href="<?php echo admin_url('admin.php?page=my-calendar-manage&limit=published'); ?> "><?php _e('Published', 'my-calendar'); ?> </a> </li> <li> <a <?php echo isset($_GET['limit']) && $_GET['limit'] == 'reserved' ? 'class="active-link"' : ''; ?> href="<?php echo admin_url('admin.php?page=my-calendar-manage&limit=reserved'); ?> "><?php _e('Reserved', 'my-calendar'); ?> </a> </li> <li> <a <?php echo isset($_GET['limit']) && $_GET['limit'] == 'all' || !isset($_GET['limit']) ? 'class="active-link"' : ''; ?> href="<?php echo admin_url('admin.php?page=my-calendar-manage&restrict=archived'); ?> "><?php _e('Archived', 'my-calendar'); ?> </a> </li> <li> <a <?php echo isset($_GET['limit']) && $_GET['limit'] == 'all' || !isset($_GET['limit']) ? 'class="active-link"' : ''; ?> href="<?php echo admin_url('admin.php?page=my-calendar-manage&limit=all'); ?> "><?php _e('All', 'my-calendar'); ?> </a> </li> </ul><?php } echo $filtered; $num_pages = ceil($items / $items_per_page); if ($num_pages > 1) { $page_links = paginate_links(array('base' => add_query_arg('paged', '%#%'), 'format' => '', 'prev_text' => __('« Previous<span class="screen-reader-text"> Events</span>', 'my-calendar'), 'next_text' => __('Next<span class="screen-reader-text"> Events</span> »', 'my-calendar'), 'total' => $num_pages, 'current' => $current, 'mid_size' => 1)); printf("<div class='tablenav'><div class='tablenav-pages'>%s</div></div>", $page_links); } if (!empty($events)) { ?> <form action="<?php echo esc_url(add_query_arg($_GET, admin_url('admin.php'))); ?> " method="post"> <div><input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('my-calendar-nonce'); ?> "/> </div> <div class='mc-actions'> <input type="submit" class="button-secondary delete" name="mass_delete" value="<?php _e('Delete events', 'my-calendar'); ?> "/> <?php if (current_user_can('mc_approve_events')) { ?> <input type="submit" class="button-secondary mc-approve" name="mass_approve" value="<?php _e('Approve events', 'my-calendar'); ?> "/> <?php } ?> <?php if (!(isset($_GET['restrict']) && $_GET['restrict'] == 'archived')) { ?> <input type="submit" class="button-secondary mc-archive" name="mass_archive" value="<?php _e('Archive events', 'my-calendar'); ?> "/> <?php } else { ?> <input type="submit" class="button-secondary mc-archive" name="mass_undo_archive" value="<?php _e('Remove from archive', 'my-calendar'); ?> "/> <?php } ?> </div> <table class="widefat wp-list-table" id="my-calendar-admin-table"> <thead> <tr> <th scope="col" style="width: 50px;"><input type='checkbox' class='selectall' id='mass_edit'/> <label for='mass_edit' class="screen-reader-text"><?php _e('Check/Uncheck all', 'my-calendar'); ?> </label> <a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=1{$sorting}"); ?> "><?php _e('ID', 'my-calendar'); ?> </a> </th> <th scope="col"><a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=2{$sorting}"); ?> "><?php _e('Title', 'my-calendar'); ?> </a> </th> <th scope="col"><a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=7{$sorting}"); ?> "><?php _e('Location', 'my-calendar'); ?> </a> </th> <th scope="col"><a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=4{$sorting}"); ?> "><?php _e('Date/Time', 'my-calendar'); ?> </a> </th> <th scope="col"><a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=5{$sorting}"); ?> "><?php _e('Author', 'my-calendar'); ?> </a> </th> <th scope="col"><a href="<?php echo admin_url("admin.php?page=my-calendar-manage&sort=6{$sorting}"); ?> "><?php _e('Category', 'my-calendar'); ?> </a> </th> </tr> </thead> <?php $class = ''; $sql = "SELECT * FROM " . my_calendar_categories_table(); $categories = $mcdb->get_results($sql); foreach (array_keys($events) as $key) { $event =& $events[$key]; $event = mc_get_event_core($event->event_id); if (!is_object($event)) { continue; } $class = $class == 'alternate' ? 'even' : 'alternate'; $pending = $event->event_approved == 0 ? 'pending' : ''; $author = $event->event_author != 0 ? get_userdata($event->event_author) : 'Public Submitter'; if ($event->event_flagged == 1 && (isset($_GET['restrict']) && $_GET['restrict'] == 'flagged')) { $spam = 'spam'; $pending = ''; $spam_label = '<strong>' . __('Possible spam', 'my-calendar') . ':</strong> '; } else { $spam = ''; $spam_label = ''; } $edit_url = admin_url("admin.php?page=my-calendar&mode=edit&event_id={$event->event_id}"); $copy_url = admin_url("admin.php?page=my-calendar&mode=copy&event_id={$event->event_id}"); $view_url = mc_get_details_link($event); $group_url = admin_url("admin.php?page=my-calendar-groups&mode=edit&event_id={$event->event_id}&group_id={$event->event_group_id}"); $delete_url = admin_url("admin.php?page=my-calendar-manage&mode=delete&event_id={$event->event_id}"); $check = mc_test_occurrence_overlap($event, true); $problem = $check != '' ? 'problem' : ''; if (current_user_can('mc_manage_events') || current_user_can('mc_approve_events') || mc_can_edit_event($event->event_id)) { ?> <tr class="<?php echo "{$class} {$spam} {$pending} {$problem}"; ?> "> <th scope="row"> <input type="checkbox" value="<?php echo $event->event_id; ?> " name="mass_edit[]" id="mc<?php echo $event->event_id; ?> " <?php echo $event->event_flagged == 1 ? 'checked="checked"' : ''; ?> /> <label for="mc<?php echo $event->event_id; ?> "><?php echo $event->event_id; ?> </label> </th> <td title="<?php echo esc_attr(substr(strip_tags(stripslashes($event->event_desc)), 0, 240)); ?> "> <strong><?php if (mc_can_edit_event($event->event_id)) { ?> <a href="<?php echo $edit_url; ?> " class='edit'> <?php } ?> <?php echo $spam_label; echo strip_tags(stripslashes($event->event_title)); ?> <?php if (mc_can_edit_event($event->event_id)) { echo "</a>"; if ($check != '') { echo '<br /><strong class="error">' . sprintf(__('There is a problem with this event. <a href="%s">View</a>', 'my-calendar'), $edit_url) . '</strong>'; } } ?> </strong> <div class='row-actions' style="visibility:visible;"> <?php if (mc_event_published($event)) { ?> <a href="<?php echo $view_url; ?> " class='view'><?php _e('View', 'my-calendar'); ?> </a> | <?php } ?> <a href="<?php echo $copy_url; ?> " class='copy'><?php _e('Copy', 'my-calendar'); ?> </a> | <?php if (mc_can_edit_event($event->event_id)) { ?> <a href="<?php echo $edit_url; ?> " class='edit'><?php _e('Edit', 'my-calendar'); ?> </a> <?php if (mc_event_is_grouped($event->event_group_id)) { ?> | <a href="<?php echo $group_url; ?> " class='edit group'><?php _e('Edit Group', 'my-calendar'); ?> </a> <?php } ?> | <a href="<?php echo $delete_url; ?> " class="delete"><?php _e('Delete', 'my-calendar'); ?> </a> <?php } else { _e("Not editable.", 'my-calendar'); } if (get_option('mc_event_approve') == 'true') { ?> | <?php if (current_user_can('mc_approve_events')) { // Added by Roland P. if ($event->event_approved == '1') { $mo = 'reject'; $te = __('Reject', 'my-calendar'); } else { $mo = 'publish'; $te = __('Approve', 'my-calendar'); } ?> <a href="<?php echo admin_url("admin.php?page=my-calendar-manage&mode={$mo}&event_id={$event->event_id}"); ?> " class='<?php echo $mo; ?> '><?php echo $te; ?> </a> <?php } else { switch ($event->event_approved) { case 1: _e('Approved', 'my-calendar'); break; case 2: _e('Rejected', 'my-calendar'); break; default: _e('Awaiting Approval', 'my-calendar'); } } } ?> </div> </td> <td> <?php if ($event->event_label != '') { ?> <a class='mc_filter' href='<?php $elabel = urlencode($event->event_label); echo admin_url("admin.php?page=my-calendar-manage&filter={$elabel}&restrict=where"); ?> ' title="<?php _e('Filter by location', 'my-calendar'); ?> "><span class="screen-reader-text"><?php _e('Show only: ', 'my-calendar'); ?> </span><?php echo strip_tags(stripslashes($event->event_label)); ?> </a><?php } ?> </td> <?php if ($event->event_endtime != "23:59:59") { $eventTime = date_i18n(get_option('mc_time_format'), strtotime($event->event_time)); } else { $eventTime = mc_notime_label($event); } ?> <td><?php $date_format = get_option('mc_date_format') == '' ? get_option('date_format') : get_option('mc_date_format'); $begin = date_i18n($date_format, strtotime($event->event_begin)); echo "{$begin}, {$eventTime}"; ?> <div class="recurs"> <strong><?php _e('Recurs', 'my-calendar'); ?> </strong> <?php $recurs = str_split($event->event_recur, 1); $recur = $recurs[0]; $every = isset($recurs[1]) ? $recurs[1] : 1; // Interpret the DB values into something human readable switch ($recur) { case 'S': _e('Never', 'my-calendar'); break; case 'D': $every == 1 ? _e('Daily', 'my-calendar') : printf(__('Every %d days', 'my-calendar'), $every); break; case 'E': $every == 1 ? _e('Weekdays', 'my-calendar') : printf(__('Every %d weekdays', 'my-calendar'), $every); break; case 'W': $every == 1 ? _e('Weekly', 'my-calendar') : printf(__('Every %d weeks', 'my-calendar'), $every); break; case 'B': _e('Bi-Weekly', 'my-calendar'); break; case 'M': $every == 1 ? _e('Monthly (by date)', 'my-calendar') : printf(__('Every %d months (by date)', 'my-calendar'), $every); break; case 'U': _e('Monthly (by day)', 'my-calendar'); break; case 'Y': $every == 1 ? _e('Yearly', 'my-calendar') : printf(__('Every %d years', 'my-calendar'), $every); break; } $eternity = _mc_increment_values($recur); if ($recur == 'S') { } else { if ($event->event_repeats > 0) { printf(__('– %d Times', 'my-calendar'), $event->event_repeats); } else { if ($eternity) { printf(__('– %d Times', 'my-calendar'), $eternity); } } } ?> </div> </td> <td><a class='mc_filter' href="<?php $auth = is_object($author) ? $author->ID : 0; echo admin_url("admin.php?page=my-calendar-manage&filter={$auth}&restrict=author"); ?> " title="<?php _e('Filter by author', 'my-calendar'); ?> "><span class="screen-reader-text"><?php _e('Show only: ', 'my-calendar'); ?> </span><?php echo is_object($author) ? $author->display_name : $author; ?> </a></td> <?php if (!$event->event_category) { // events *must* have a category mc_update_event('event_category', 1, $event->event_id, '%d'); } $color = strip_tags(mc_get_category_detail($event->event_category, 'category_color')); ?> <td> <div class="category-color" style="background-color:<?php echo strpos($color, '#') !== 0 ? '#' : ''; echo $color; ?> ;"> </div> <a class='mc_filter' href='<?php echo admin_url("admin.php?page=my-calendar-manage&filter={$event->event_category}&restrict=category"); ?> ' title="<?php _e('Filter by category', 'my-calendar'); ?> "><span class="screen-reader-text"><?php _e('Show only: ', 'my-calendar'); ?> </span><?php echo mc_kses_post(mc_get_category_detail($event->event_category, 'category_name')); ?> </a></td> </tr> <?php } } ?> </table> <p> <input type="submit" class="button-secondary delete" name="mass_delete" value="<?php _e('Delete events', 'my-calendar'); ?> "/> <?php if (current_user_can('mc_approve_events')) { ?> <input type="submit" class="button-secondary mc-approve" name="mass_approve" value="<?php _e('Approve events', 'my-calendar'); ?> "/> <?php } ?> <?php if (!(isset($_GET['restrict']) && $_GET['restrict'] == 'archived')) { ?> <input type="submit" class="button-secondary mc-archive" name="mass_archive" value="<?php _e('Archive events', 'my-calendar'); ?> "/> <?php } ?> </p> <p> <?php if (!(isset($_GET['restrict']) && $_GET['restrict'] == 'archived')) { ?> <a class='mc_filter' href='<?php echo admin_url("admin.php?page=my-calendar-manage&restrict=archived"); ?> '><?php _e('View Archived Events', 'my-calendar'); ?> </a> <?php } else { ?> <a class='mc_filter' href='<?php echo admin_url("admin.php?page=my-calendar-manage"); ?> '><?php _e('Return to Manage Events', 'my-calendar'); ?> </a> <?php } ?> </p> </form> <?php } else { ?> <p class='mc-none'><?php _e("There are no events in the database meeting your current criteria.", 'my-calendar'); ?> </p><?php } } }
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_events_class($events, $date = false) { $class = $events_class = ''; if (!is_array($events) || !count($events)) { $events_class = "no-events"; } else { foreach (array_keys($events) as $key) { $event =& $events[$key]; if ($event->event_endtime == '00:00:00' && date('Y-m-d', strtotime($event->occur_end)) == $date && date('Y-m-d', strtotime($event->occur_begin)) != $date) { continue; } $author = ' author' . $event->event_author; if (strpos($class, $author) === false) { $class .= $author; } $cat = ' mcat_' . sanitize_title($event->category_name); if (strpos($class, $cat) === false) { $class .= $cat; } if (mc_get_category_detail($event->category_id, 'category_private') == 1 && !is_user_logged_in()) { $class = ''; } } if ($class) { $events_class = "has-events{$class}"; } } return $events_class; }
function mc_create_event_post($data, $event_id) { $post_id = mc_get_event_post($event_id); if (!$post_id) { $term = mc_get_category_detail($data['event_category'], 'category_term'); $privacy = mc_get_category_detail($data['event_category'], 'category_private') == 1 ? 'private' : 'publish'; $title = $data['event_title']; $template = apply_filters('mc_post_template', 'details', $term); $data['shortcode'] = "[my_calendar_event event='{$event_id}' template='{$template}' list='']"; $description = $data['event_desc']; $excerpt = $data['event_short']; $location_id = isset($_POST['location_preset']) ? (int) $_POST['location_preset'] : 0; $post_status = $privacy; $auth = $data['event_author']; $type = 'mc-events'; $my_post = array('post_title' => $title, 'post_content' => $description, 'post_status' => $post_status, 'post_author' => $auth, 'post_name' => sanitize_title($title), 'post_date' => date('Y-m-d H:i:s', current_time('timestamp')), 'post_type' => $type, 'post_excerpt' => $excerpt); $post_id = wp_insert_post($my_post); wp_set_object_terms($post_id, (int) $term, 'mc-event-category'); $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); } mc_update_event('event_post', $post_id, $event_id); mc_update_event('event_location', $location_id, $event_id); do_action('mc_update_event_post', $post_id, $_POST, $data, $event_id); wp_publish_post($post_id); } return $post_id; }