function mc_create_tags($event, $context = 'filters')
{
    $event = mc_clean_location($event, 'event');
    $e = array();
    $e['post'] = $event->event_post;
    $date_format = get_option('mc_date_format') != '' ? get_option('mc_date_format') : get_option('date_format');
    $e = apply_filters('mc_insert_author_data', $e, $event);
    $e = apply_filters('mc_filter_image_data', $e, $event);
    $map = mc_maplink($event);
    $map_url = mc_maplink($event, 'url');
    $sitelink_html = "<div class='url link'><a href='{$event->event_url}' class='location-link external'>" . sprintf(__('Visit web site<span class="screen-reader-text">: %s</span>', 'my-calendar'), $event->event_label) . "</a></div>";
    $e['sitelink_html'] = $sitelink_html;
    $e['sitelink'] = $event->event_url;
    $e['access'] = mc_expand(get_post_meta($event->event_post, '_mc_event_access', true));
    // date & time fields
    $real_end_date = $event->occur_end;
    $dtstart = mc_format_timestamp(strtotime($event->occur_begin));
    $dtend = mc_format_timestamp(strtotime($real_end_date));
    $e['date_utc'] = date_i18n(apply_filters('mc_date_format', $date_format, 'template_begin_ts'), $event->ts_occur_begin);
    $e['date_end_utc'] = date_i18n(apply_filters('mc_date_format', $date_format, 'template_end_ts'), $event->ts_occur_end);
    $notime = mc_notime_label($event);
    $e['time'] = date('H:i:s', strtotime($event->occur_begin)) == '00:00:00' ? $notime : date(get_option('mc_time_format'), strtotime($event->occur_begin));
    $e['time24'] = date('G:i', strtotime($event->occur_begin)) == '00:00:00' ? $notime : date(get_option('mc_time_format'), strtotime($event->occur_begin));
    $endtime = $event->event_end == '23:59:59' ? '00:00:00' : date('H:i:s', strtotime($real_end_date));
    $e['endtime'] = $real_end_date == $event->occur_begin || $event->event_hide_end == 1 || date('H:i:s', strtotime($real_end_date)) == '23:59:59' ? '' : date_i18n(get_option('mc_time_format'), strtotime($endtime));
    $e['runtime'] = mc_runtime($event->ts_occur_begin, $event->ts_occur_end, $event);
    $e['dtstart'] = date('Y-m-d\\TH:i:s', strtotime($event->occur_begin));
    // hcal formatted
    $e['dtend'] = date('Y-m-d\\TH:i:s', strtotime($real_end_date));
    //hcal formatted end
    $e['rssdate'] = date('D, d M Y H:i:s +0000', strtotime($event->event_added));
    $date = date_i18n(apply_filters('mc_date_format', $date_format, 'template_begin'), strtotime($event->occur_begin));
    $date_end = date_i18n(apply_filters('mc_date_format', $date_format, 'template_end'), strtotime($real_end_date));
    $date_arr = array('occur_begin' => $event->occur_begin, 'occur_end' => $real_end_date);
    $date_obj = (object) $date_arr;
    if ($event->event_span == 1) {
        $dates = mc_event_date_span($event->event_group_id, $event->event_span, array(0 => $date_obj));
    } else {
        $dates = array();
    }
    $e['date'] = $event->event_span != 1 ? $date : mc_format_date_span($dates, 'simple', $date);
    $e['enddate'] = $date_end;
    $e['daterange'] = $date == $date_end ? $date : "<span class='mc_db'>{$date}</span> <span>&ndash;</span> <span class='mc_de'>{$date_end}</span>";
    $e['timerange'] = $e['time'] == $e['endtime'] || $event->event_hide_end == 1 || date('H:i:s', strtotime($real_end_date)) == '23:59:59' ? $e['time'] : "<span class='mc_tb'>" . $e['time'] . "</span> <span>&ndash;</span> <span class='mc_te'>" . $e['endtime'] . "</span>";
    $e['datespan'] = $event->event_span == 1 || $e['date'] != $e['enddate'] ? mc_format_date_span($dates) : $date;
    $e['multidate'] = mc_format_date_span($dates, 'complex', "<span class='fallback-date'>{$date}</span><span class='separator'>,</span> <span class='fallback-time'>{$e['time']}</span>&ndash;<span class='fallback-endtime'>{$e['endtime']}</span>");
    $e['began'] = $event->event_begin;
    // returns date of first occurrence of an event.
    $e['recurs'] = mc_event_recur_string($event);
    $e['repeats'] = $event->event_repeats;
    // category fields
    $e['cat_id'] = $event->event_category;
    $e['category'] = stripslashes($event->category_name);
    $e['icon'] = mc_category_icon($event, 'img');
    $e['icon_html'] = "<img src='{$e['icon']}' class='mc-category-icon' alt='" . __('Category', 'my-calendar') . ": " . esc_attr($event->category_name) . "' />";
    $e['color'] = $event->category_color;
    $e['color_css'] = "<span style='background-color: {$event->category_color}'>";
    // this is because widgets now strip out style attributes.
    $e['close_color_css'] = "</span>";
    // special
    $e['skip_holiday'] = $event->event_holiday == 0 ? 'false' : 'true';
    $e['event_status'] = $event->event_approved == 1 ? __('Published', 'my-calendar') : __('Reserved', 'my-calendar');
    // general text fields
    $e['title'] = stripslashes($event->event_title);
    $e['description'] = wpautop(stripslashes($event->event_desc));
    $e['description_raw'] = stripslashes($event->event_desc);
    $e['description_stripped'] = strip_tags(stripslashes($event->event_desc));
    $e['shortdesc'] = wpautop(stripslashes($event->event_short));
    $e['shortdesc_raw'] = stripslashes($event->event_short);
    $e['shortdesc_stripped'] = strip_tags(stripslashes($event->event_short));
    // registration fields
    $e['event_open'] = mc_event_open($event);
    $e['event_tickets'] = $event->event_tickets;
    $e['event_registration'] = stripslashes(wp_kses_data($event->event_registration));
    // links
    $templates = get_option('mc_templates');
    $e_template = !empty($templates['label']) ? stripcslashes($templates['label']) : __('Details about', 'my-calendar') . ' {title}';
    $tags = array("{title}", "{location}", "{color}", "{icon}", "{date}", "{time}");
    $replacements = array(stripslashes($event->event_title), stripslashes($event->event_label), $event->category_color, $event->category_icon, $e['date'], $e['time']);
    $e_label = str_replace($tags, $replacements, $e_template);
    //$e_label = mc_get_details_label( $event, $e ); // recursive...hmmmm.
    $e_link = mc_get_details_link($event);
    $e['link'] = mc_event_link($event);
    if ($e['link']) {
        $e['link_image'] = str_replace("alt=''", "alt='" . esc_attr($e['title']) . "'", "<a href='" . $e['link'] . "'>" . $e['image'] . "</a>");
        $e['link_title'] = "<a href='" . $event->event_link . "'>" . $e['title'] . "</a>";
    } else {
        $e['link_image'] = $e['image'];
        $e['link_title'] = $e['title'];
    }
    $e['details_link'] = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? $e_link : '';
    $e['details'] = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? "<a href='{$e_link}' class='mc-details'>{$e_label}</a>" : '';
    $e['linking'] = $e['link'] != '' ? $event->event_link : $e_link;
    $e['linking_title'] = $e['linking'] != '' ? "<a href='" . $e['linking'] . "'>" . $e['title'] . "</a>" : $e['title'];
    // location fields
    $strip_desc = mc_newline_replace(strip_tags($event->event_desc));
    $e['location'] = stripslashes($event->event_label);
    $e['street'] = stripslashes($event->event_street);
    $e['street2'] = stripslashes($event->event_street2);
    $e['phone'] = apply_filters('mc_phone_format', stripslashes($event->event_phone));
    $e['phone2'] = apply_filters('mc_phone_format', stripslashes($event->event_phone2));
    $e['city'] = stripslashes($event->event_city);
    $e['state'] = stripslashes($event->event_state);
    $e['postcode'] = stripslashes($event->event_postcode);
    $e['country'] = stripslashes($event->event_country);
    $e['hcard'] = stripslashes(mc_hcard($event));
    $e['link_map'] = $map;
    $e['map_url'] = $map_url;
    $e['map'] = mc_generate_map($event);
    $url = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? $e_link : $event->event_url;
    $e['gcal'] = mc_google_cal($dtstart, $dtend, $url, stripcslashes($event->event_title), mc_maplink($event, 'gcal'), $strip_desc);
    $e['gcal_link'] = "<a href='" . mc_google_cal($dtstart, $dtend, $url, stripcslashes($event->event_title), mc_maplink($event, 'gcal'), $strip_desc) . "' class='gcal external'>" . sprintf(__('Send <span class="screen-reader-text">%1$s </span>to Google Calendar', 'my-calendar'), stripcslashes($event->event_title)) . "</a>";
    $e['location_access'] = mc_expand(unserialize(mc_location_data('location_access', $event->event_location)));
    $e['location_source'] = $event->event_location;
    // IDs
    $e['dateid'] = $event->occur_id;
    // unique ID for this date of this event
    $e['id'] = $event->event_id;
    $e['group'] = $event->event_group_id;
    $e['event_span'] = $event->event_span;
    // RSS guid
    $e['region'] = $event->event_region;
    $e['guid'] = get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri')) ? "<guid isPermaLink='true'>{$e_link}</guid>" : "<guid isPermalink='false'>{$e_link}</guid>";
    // iCAL
    $e['ical_location'] = $event->event_label . ' ' . $event->event_street . ' ' . $event->event_street2 . ' ' . $event->event_city . ' ' . $event->event_state . ' ' . $event->event_postcode;
    $e['ical_description'] = str_replace("\r", "=0D=0A=", $event->event_desc);
    $e['ical_desc'] = $strip_desc;
    $e['ical_start'] = $dtstart;
    $e['ical_end'] = $dtend;
    $ical_link = mc_build_url(array('vcal' => $event->occur_id), array('month', 'dy', 'yr', 'ltype', 'loc', 'mcat', 'format'), get_option('mc_uri'));
    $e['ical'] = $ical_link;
    $e['ical_html'] = "<a class='ical' rel='nofollow' href='{$ical_link}'>" . __('iCal', 'my-calendar') . "</a>";
    $e = apply_filters('mc_filter_shortcodes', $e, $event);
    return $e;
}
Exemplo n.º 2
0
function my_calendar_locations_list($show = 'list', $type = 'saved', $datatype = 'name', $group = 'single')
{
    global $wpdb;
    $mcdb = $wpdb;
    if (get_option('mc_remote') == 'true' && function_exists('mc_remote_db')) {
        $mcdb = mc_remote_db();
    }
    $output = '';
    if (isset($_GET['mc_id'])) {
        return;
    }
    if ($type == 'saved') {
        switch ($datatype) {
            case "name":
                $data = "location_label";
                break;
            case "city":
                $data = "location_city";
                break;
            case "state":
                $data = "location_state";
                break;
            case "zip":
                $data = "location_postcode";
                break;
            case "country":
                $data = "location_country";
                break;
            case "region":
                $data = "location_region";
                break;
            default:
                $data = "location_label";
        }
    } else {
        $data = $datatype;
    }
    $current_url = mc_get_current_url();
    if ($type == 'saved') {
        $locations = $mcdb->get_results("SELECT DISTINCT {$data} FROM " . MY_CALENDAR_LOCATIONS_TABLE . " ORDER BY {$data} ASC", ARRAY_A);
    } else {
        $data = get_option('mc_user_settings');
        $locations = $data['my_calendar_location_default']['values'];
        $datatype = str_replace('event_', '', get_option('mc_location_type'));
        $datatype = $datatype == 'label' ? 'name' : $datatype;
        $datatype = $datatype == 'postcode' ? 'zip' : $datatype;
    }
    if (count($locations) > 1) {
        if ($show == 'list') {
            $url = mc_build_url(array('loc' => 'all', 'ltype' => 'all'), array());
            $output .= "<ul id='mc-locations-list'>\n\t\t\t<li><a href='{$url}'>" . __('Show all', 'my-calendar') . "</a></li>\n";
        } else {
            $ltype = !isset($_GET['ltype']) ? $datatype : $_GET['ltype'];
            $output .= "<div id='mc_locations'>";
            $output .= $group == 'single' ? "\n\t\t<form action='" . $current_url . "' method='get'>\n\t\t<div>" : '';
            $output .= "<input type='hidden' name='ltype' value='{$ltype}' />";
            if ($group == 'single') {
                $qsa = array();
                parse_str($_SERVER['QUERY_STRING'], $qsa);
                if (!isset($_GET['cid'])) {
                    $output .= '<input type="hidden" name="cid" value="all" />';
                }
                foreach ($qsa as $name => $argument) {
                    $name = esc_attr(strip_tags($name));
                    $argument = esc_attr(strip_tags($argument));
                    if ($name != 'loc' && $name != 'ltype') {
                        $output .= "\n\t\t" . '<input type="hidden" name="' . $name . '" value="' . $argument . '" />';
                    }
                }
            }
            $output .= "\n\t\t\t<label for='mc-locations-list'>" . __('Location', 'my-calendar') . "</label>\n\t\t\t<select name='loc' id='mc-locations-list'>\n\t\t\t<option value='all'>" . __('Show all', 'my-calendar') . "</option>\n";
        }
        foreach ($locations as $key => $location) {
            if ($type == 'saved') {
                foreach ($location as $key => $value) {
                    $vt = urlencode(trim($value));
                    $value = stripcslashes($value);
                    if ($value == '') {
                        continue;
                    }
                    if (empty($_GET['loc'])) {
                        $loc = '';
                    } else {
                        $loc = $_GET['loc'];
                    }
                    if ($show == 'list') {
                        $selected = $vt == $loc ? " class='selected'" : '';
                        $this_url = mc_build_url(array('loc' => $vt, 'ltype' => $datatype), array());
                        $output .= "\t\t\t<li{$selected}><a rel='nofollow' href='{$this_url}'>{$value}</a></li>\n";
                    } else {
                        $selected = $vt == $loc ? " selected='selected'" : '';
                        if ($value != '') {
                            $output .= "\t\t\t<option value='{$vt}'{$selected}>{$value}</option>\n";
                        }
                    }
                }
            } else {
                $vk = urlencode(trim($key));
                $location = trim($location);
                if ($location == '') {
                    continue;
                }
                if ($show == 'list') {
                    $selected = $vk == $_GET['loc'] ? " class='selected'" : '';
                    $this_url = mc_build_url(array('loc' => $vk, 'ltype' => $datatype), array());
                    $output .= "\t\t\t<li{$selected}><a rel='nofollow' href='{$this_url}'>{$location}</a></li>\n";
                } else {
                    $selected = $vk == $_GET['loc'] ? " selected='selected'" : '';
                    $output .= "\t\t\t<option value='{$vk}'{$selected}>{$location}</option>\n";
                }
            }
        }
        if ($show == 'list') {
            $output .= "</ul>";
        } else {
            $output .= "</select>";
            $output .= $group == 'single' ? "<input type='submit' value=" . __('Submit', 'my-calendar') . " />\n\t\t\t\t\t</div>\n\t\t\t\t</form>" : '';
            $output .= "\n\t\t\t</div>";
        }
        $output = apply_filters('mc_location_selector', $output, $locations);
        return $output;
    } else {
        return;
    }
}
Exemplo n.º 3
0
function mc_get_details_link($event)
{
    // if available, and not querying remotely, use permalink.
    $permalinks = apply_filters('mc_use_permalinks', get_option('mc_use_permalinks'));
    $permalinks = $permalinks === 1 || $permalinks === true || $permalinks === 'true' ? true : false;
    $details_link = $event->event_link;
    if ($event->event_post != 0 && get_option('mc_remote') != 'true' && $permalinks) {
        $details_link = add_query_arg('mc_id', $event->occur_id, get_permalink($event->event_post));
    } else {
        if (get_option('mc_uri') != '' && !is_numeric(get_option('mc_uri'))) {
            $details_link = mc_build_url(array('mc_id' => $event->occur_id), array('month', 'dy', 'yr', 'ltype', 'loc', 'mcat', 'format', 'feed', 'page_id', 'p', 'mcs', 'time'), get_option('mc_uri'));
        }
    }
    return $details_link;
}
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);
}