function mc_show_block($field, $has_data, $data, $echo = true, $default = '')
{
    global $user_ID;
    $return = $checked = $value = '';
    $show_block = mc_show_edit_block($field);
    $pre = '<div class="ui-sortable meta-box-sortables"><div class="postbox">';
    $post = '</div></div>';
    switch ($field) {
        case 'event_host':
            if ($show_block) {
                $users = mc_get_users();
                $select = '';
                foreach ($users as $u) {
                    $display_name = $u->display_name == '' ? $u->user_nicename : $u->display_name;
                    if (is_object($data) && $data->event_host == $u->ID) {
                        $selected = ' selected="selected"';
                    } else {
                        if (is_object($u) && $u->ID == $user_ID && empty($data->event_host)) {
                            $selected = ' selected="selected"';
                        } else {
                            $selected = '';
                        }
                    }
                    $select .= "<option value='{$u->ID}'{$selected}>{$display_name}</option>\n";
                }
                $return = '
					<p>
					<label for="e_host">' . __('Host', 'my-calendar') . '</label>
					<select id="e_host" name="event_host">' . $select . '</select>
				</p>';
            }
            break;
        case 'event_author':
            if ($show_block && is_object($data) && $data->event_author === '0') {
                $users = mc_get_users();
                $select = '';
                foreach ($users as $u) {
                    $display_name = $u->display_name == '' ? $u->user_nicename : $u->display_name;
                    $select .= "<option value='{$u->ID}'>{$display_name}</option>\n";
                }
                $return = '
					<p>
					<label for="e_author">' . __('Author', 'my-calendar') . '</label>
					<select id="e_author" name="event_author">
						<option value="0" selected="selected">Public Submitter</option>' . $select . '</select>
				</p>';
            } else {
                $return = '<input type="hidden" name="event_author" value="' . $default . '" />';
            }
            break;
        case 'event_desc':
            if ($show_block) {
                global $current_screen;
                // because wp_editor cannot return a value, event_desc fields cannot be filtered if its enabled.
                $value = $has_data ? stripslashes($data->event_desc) : '';
                if ($current_screen->base == 'post') {
                    $return = '<div class="event_description">
									<label for="content" class="screen-reader-text">' . __('Event Description', 'my-calendar') . '</label>
									<textarea id="content" name="content" class="event_desc" rows="8" cols="80">' . stripslashes(esc_attr($value)) . '</textarea>
								</div>';
                } else {
                    echo '
					<div class="event_description">
					<label for="content" class="screen-reader-text">' . __('Event Description', 'my-calendar') . '</label>';
                    if (user_can_richedit()) {
                        wp_editor($value, 'content', array('textarea_rows' => 10));
                    } else {
                        echo '<textarea id="content" name="content" class="event_desc" rows="8" cols="80">' . stripslashes(esc_attr($value)) . '</textarea>';
                    }
                    echo '</div>';
                }
            }
            break;
        case 'event_short':
            if ($show_block) {
                $value = $has_data ? stripslashes(esc_attr($data->event_short)) : '';
                $return = '
				<p>
					<label for="e_short">' . __('Short Description', 'my-calendar') . '</label><br /><textarea id="e_short" name="event_short" rows="2" cols="80">' . $value . '</textarea>
				</p>';
            }
            break;
        case 'event_image':
            if ($show_block) {
                if ($has_data && property_exists($data, 'event_post')) {
                    $image = has_post_thumbnail($data->event_post) ? get_the_post_thumbnail_url($data->event_post) : $data->event_image;
                    $image_id = has_post_thumbnail($data->event_post) ? get_post_thumbnail_id($data->event_post) : '';
                } else {
                    $image = '';
                    $image_id = '';
                }
                $return = '
				<div class="mc-image-upload field-holder">
					<input type="hidden" name="event_image_id" value="' . esc_attr($image_id) . '" class="textfield" id="e_image_id" />
					<label for="e_image">' . __("Add an image:", 'my-calendar') . '</label><br /><input type="text" name="event_image" id="e_image" size="60" value="' . esc_attr($image) . '" placeholder="http://yourdomain.com/image.jpg" /> <button type="button" class="button textfield-field">' . __("Upload", 'my-calendar') . '</button>';
                if ($image != '') {
                    $image = has_post_thumbnail($data->event_post) ? get_the_post_thumbnail_url($data->event_post) : $data->event_image;
                    $return .= '<div class="event_image"><img src="' . esc_attr($image) . '" alt="" /></div>';
                } else {
                    $return .= '<div class="event_image"></div>';
                }
                $return .= '</div>';
            } else {
                $return = '<input type="hidden" name="event_image" value="' . esc_attr($image) . '" />';
            }
            break;
        case 'event_category':
            if ($show_block) {
                $return = '<p>
				<label for="e_category">' . __('Category', 'my-calendar') . '</label>
				<select id="e_category" name="event_category">' . mc_category_select($data) . '
				</select>
				</p>';
            } else {
                $return = '<div><input type="hidden" name="event_category" value="' . mc_category_select($data, false) . '" /></div>';
            }
            break;
        case 'event_link':
            if ($show_block) {
                $value = $has_data ? esc_url($data->event_link) : '';
                if ($has_data && $data->event_link_expires == '1') {
                    $checked = " checked=\"checked\"";
                } else {
                    if ($has_data && $data->event_link_expires == '0') {
                        $checked = "";
                    } else {
                        if (get_option('mc_event_link_expires') == 'true') {
                            $checked = " checked=\"checked\"";
                        }
                    }
                }
                $return = '
					<p>
						<label for="e_link">' . __('URL', 'my-calendar') . '</label> <input type="text" id="e_link" name="event_link" size="40" value="' . $value . '" /> <input type="checkbox" value="1" id="e_link_expires" name="event_link_expires"' . $checked . ' /> <label for="e_link_expires">' . __('Link will expire after event', 'my-calendar') . '</label>
					</p>';
            }
            break;
        case 'event_recurs':
            if (is_object($data)) {
                $event_recur = is_object($data) ? $data->event_recur : '';
                $recurs = str_split($event_recur, 1);
                $recur = $recurs[0];
                $every = isset($recurs[1]) ? $recurs[1] : 1;
                if ($every == 1 && $recur == 'B') {
                    $every = 2;
                }
                $prev = '<input type="hidden" name="prev_event_repeats" value="' . $data->event_repeats . '" /><input type="hidden" name="prev_event_recur" value="' . $data->event_recur . '" />';
            } else {
                $recur = false;
                $every = 1;
                $prev = '';
            }
            if (is_object($data) && $data->event_repeats != null) {
                $repeats = $data->event_repeats;
            } else {
                $repeats = 0;
            }
            if ($show_block && empty($_GET['date'])) {
                $return = $pre . '
<h2>' . __('Recurring', 'my-calendar') . '</h2>
	<div class="inside">' . $prev . '
		<fieldset>
		<legend class="screen-reader-text">' . __('Recurring Events', 'my-calendar') . '</legend>
			<p>
				<label for="e_repeats">' . __('Repeats', 'my-calendar') . ' <input type="text" name="event_repeats" aria-labelledby="e_repeats_label" id="e_repeats" size="1" value="' . esc_attr($repeats) . '" /> <span id="e_repeats_label">' . __('times', 'my-calendar') . '</span>, </label>
				<label for="e_every">' . __('every', 'my-calendar') . '</label> <input type="number" name="event_every" id="e_every" size="1" min="1" max="99" maxlength="2" value="' . esc_attr($every) . '" /> 
				<label for="e_recur" class="screen-reader-text">' . __('Units', 'my-calendar') . '</label> 
				<select name="event_recur" id="e_recur">
					' . mc_recur_options($recur) . '
				</select><br />
				' . __('Your entry is the number of events after the first occurrence of the event: a recurrence of <em>2</em> means the event will happen three times.', 'my-calendar') . '
				<div class="mc_recur_notice" aria-live="polite"><p><span class="dashicons dashicons-no"></span>' . __('Month by day events currently only support monthly recurrances.', 'my-calendar') . '</p></div>
			</p>
		</fieldset>	
	</div>
							' . $post;
            } else {
                if ($every == '' && $repeats == '') {
                    $every = 'S';
                    $repeats = '0';
                }
                $return = '
				<div>' . $prev . '		
					<input type="hidden" name="event_repeats" value="' . esc_attr($repeats) . '" />
					<input type="hidden" name="event_every" value="' . esc_attr($every) . '" />
					<input type="hidden" name="event_recur" value="' . esc_attr($recur) . '" />
				</div>';
            }
            break;
        case 'event_access':
            if ($show_block) {
                $label = __('Event Access', 'my-calendar');
                $return = $pre . '
						<h2>' . $label . '</h2>
							<div class="inside">		
								' . mc_event_accessibility('', $data, $label) . apply_filters('mc_event_access_fields', '', $has_data, $data) . '						
							</div>' . $post;
            }
            break;
        case 'event_open':
            if ($show_block) {
                $return = $pre . '
				<h2>' . __('Event Registration Settings', 'my-calendar') . '</h2>
				<div class="inside">
					<fieldset>
					<legend class="screen-reader-text">' . __('Event Registration', 'my-calendar') . '</legend>
					' . apply_filters('mc_event_registration', '', $has_data, $data, 'admin') . '		
					</fieldset>
				</div>
				' . $post;
            } else {
                $open = $has_data ? esc_attr($data->event_open) : '2';
                $tickets = $has_data ? esc_url($data->event_tickets) : '';
                $registration = $has_data ? esc_attr($data->event_registration) : '';
                $return = '
				<div>
					<input type="hidden" name="event_open" value="' . $open . '" />
					<input type="hidden"  name="event_tickets" value="' . $tickets . '" />
					<input type="hidden" name="event_registration" value="' . $registration . '" />
				</div>';
            }
            break;
        case 'event_location':
            if ($show_block) {
                $return = mc_locations_fields($has_data, $data, 'event');
            } else {
                if ($has_data) {
                    $return = "\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<input type='hidden' name='event_label' value='" . esc_attr(stripslashes($data->event_label)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_street' value='" . esc_attr(stripslashes($data->event_street)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_street2' value='" . esc_attr(stripslashes($data->event_street2)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_phone' value='" . esc_attr(stripslashes($data->event_phone)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_phone2' value='" . esc_attr(stripslashes($data->event_phone2)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_city' value='" . esc_attr(stripslashes($data->event_city)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_state' value='" . esc_attr(stripslashes($data->event_state)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_postcode' value='" . esc_attr(stripslashes($data->event_postcode)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_region' value='" . esc_attr(stripslashes($data->event_region)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_country' value='" . esc_attr(stripslashes($data->event_country)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_zoom' value='" . esc_attr(stripslashes($data->event_zoom)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_url' value='" . esc_attr(stripslashes($data->event_url)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_latitude' value='" . esc_attr(stripslashes($data->event_latitude)) . "' />\r\n\t\t\t\t\t<input type='hidden' name='event_longitude' value='" . esc_attr(stripslashes($data->event_longitude)) . "' />\r\n\t\t\t\t</div>";
                }
            }
            break;
        default:
            return;
    }
    $return = apply_filters('mc_show_block', $return, $data, $field);
    if ($echo == true) {
        echo $return;
    } else {
        return $return;
    }
}
function mc_show_location_form($view = 'add', $curID = '')
{
    global $wpdb;
    $mcdb = $wpdb;
    $cur_loc = false;
    if ($curID != '') {
        $sql = "SELECT * FROM " . my_calendar_locations_table() . " WHERE location_id={$curID}";
        $cur_loc = $mcdb->get_row($sql);
    }
    $has_data = empty($cur_loc) ? false : true;
    if ($view == 'add') {
        ?>
		<h2><?php 
        _e('Add New Location', 'my-calendar');
        ?>
</h2>
	<?php 
    } else {
        ?>
		<h2><?php 
        _e('Edit Location', 'my-calendar');
        ?>
</h2>
	<?php 
    }
    ?>
	<div class="postbox-container jcd-wide">
		<div class="metabox-holder">

			<div class="ui-sortable meta-box-sortables">
				<div class="postbox">
					<h3><?php 
    _e('Location Editor', 'my-calendar');
    ?>
</h3>

					<div class="inside location_form">
						<form id="my-calendar" method="post"
						      action="<?php 
    echo admin_url("admin.php?page=my-calendar-locations");
    ?>
">
							<div><input type="hidden" name="_wpnonce"
							            value="<?php 
    echo wp_create_nonce('my-calendar-nonce');
    ?>
"/></div>
							<?php 
    if ($view == 'add') {
        ?>
								<div>
									<input type="hidden" name="mode" value="add"/>
									<input type="hidden" name="location_id" value=""/>
								</div>
							<?php 
    } else {
        ?>
								<div>
									<input type="hidden" name="mode" value="edit"/>
									<input type="hidden" name="location_id"
									       value="<?php 
        echo $cur_loc->location_id;
        ?>
"/>
								</div>
							<?php 
    }
    echo mc_locations_fields($has_data, $cur_loc, 'location');
    ?>
							<p>
								<input type="submit" name="save" class="button-primary"
								       value="<?php 
    if ($view == 'edit') {
        _e('Save Changes', 'my-calendar');
    } else {
        _e('Add Location', 'my-calendar');
    }
    ?>
 &raquo;"/>
							</p>
						</form>
					</div>
				</div>
			</div>
			<?php 
    if ($view == 'edit') {
        ?>
				<p>
					<a href="<?php 
        echo admin_url("admin.php?page=my-calendar-locations");
        ?>
"><?php 
        _e('Add a New Location', 'my-calendar');
        ?>
 &raquo;</a>
				</p>
			<?php 
    }
    ?>
			<div class="ui-sortable meta-box-sortables">
				<div class="postbox">
					<h3><?php 
    _e('Manage Locations', 'my-calendar');
    ?>
</h3>

					<div class="inside">
						<?php 
    mc_manage_locations();
    ?>
					</div>
				</div>
			</div>
		</div>
		<?php 
    mc_show_sidebar();
    ?>
	</div>

<?php 
}
function mc_show_block($field, $has_data, $data)
{
    $return = $checked = $value = '';
    $show_block = mc_show_edit_block($field);
    $pre = '<div class="ui-sortable meta-box-sortables"><div class="postbox">';
    $post = '</div></div>';
    switch ($field) {
        case 'event_desc':
            if ($show_block) {
                // because wp_editor cannot return a value, event_desc fields cannot be filtered if its enabled.
                $value = $has_data ? stripslashes($data->event_desc) : '';
                echo '
				<div class="event_description">
				<label for="content">' . __('Event Description', 'my-calendar') . '</label><br />';
                if (user_can_richedit()) {
                    if (version_compare(get_bloginfo('version'), '3.3', '>=')) {
                        wp_editor($value, 'content', array('textarea_rows' => 10));
                    } else {
                        the_editor($value);
                    }
                } else {
                    echo '<textarea id="content" name="content" class="event_desc" rows="8" cols="80">' . stripslashes(esc_attr($value)) . '</textarea>';
                }
                echo '</div>';
            }
            break;
        case 'event_short':
            if ($show_block) {
                $value = $has_data ? stripslashes(esc_attr($data->event_short)) : '';
                $return = '
				<p>
					<label for="e_short">' . __('Short Description', 'my-calendar') . '</label><br /><textarea id="e_short" name="event_short" rows="2" cols="80">' . $value . '</textarea>
				</p>';
            }
            break;
        case 'event_image':
            if ($show_block) {
                $value = $has_data ? esc_attr($data->event_image) : '';
                $return = '
				<div class="mc-image-upload field-holder">
					<input type="hidden" name="event_image_id" value="" class="textfield" id="e_image_id" />
					<label for="e_image">' . __("Add an image:", 'my-calendar') . '</label><br /><input type="text" name="event_image" id="e_image" size="60" value="' . $value . '" placeholder="http://yourdomain.com/image.jpg" /> <a href="#" class="button textfield-field">' . __("Upload", 'my-calendar') . '</a>';
                if (!empty($data->event_image)) {
                    $return .= '<div class="event_image"><img src="' . esc_attr($data->event_image) . '" alt="" /></div>';
                } else {
                    $return .= '<div class="event_image"></div>';
                }
                $return .= '</div>';
            } else {
                $return = '<input type="hidden" name="event_image" value="' . $value . '" />';
            }
            break;
        case 'event_category':
            if ($show_block) {
                $return = '<p>
				<label for="e_category">' . __('Category', 'my-calendar') . '</label>
				<select id="e_category" name="event_category">' . mc_category_select($data) . '
				</select>
				</p>';
            } else {
                $return = '<div><input type="hidden" name="event_category" value="' . mc_category_select($data, false) . '" /></div>';
            }
            break;
        case 'event_link':
            if ($show_block) {
                $value = $has_data ? esc_url($data->event_link) : '';
                if ($has_data && $data->event_link_expires == '1') {
                    $checked = " checked=\"checked\"";
                } else {
                    if ($has_data && $data->event_link_expires == '0') {
                        $checked = "";
                    } else {
                        if (get_option('mc_event_link_expires') == 'true') {
                            $checked = " checked=\"checked\"";
                        }
                    }
                }
                $return = '
					<p>
						<label for="e_link">' . __('URL', 'my-calendar') . '</label> <input type="text" id="e_link" name="event_link" size="40" value="' . $value . '" /> <input type="checkbox" value="1" id="e_link_expires" name="event_link_expires"' . $checked . ' /> <label for="e_link_expires">' . __('Link will expire after event', 'my-calendar') . '</label>
					</p>';
            }
            break;
        case 'event_recur':
            if (is_object($data)) {
                $event_recur = is_object($data) ? $data->event_recur : '';
                $recurs = str_split($event_recur, 1);
                $recur = $recurs[0];
                $every = isset($recurs[1]) ? $recurs[1] : 1;
                if ($every == 1 && $recur == 'B') {
                    $every = 2;
                }
                $prev = '<input type="hidden" name="prev_event_repeats" value="' . $data->event_repeats . '" /><input type="hidden" name="prev_event_recur" value="' . $data->event_recur . '" />';
            } else {
                $recur = false;
                $every = 1;
                $prev = '';
            }
            if ($show_block && empty($_GET['date'])) {
                if (is_object($data) && $data->event_repeats != NULL) {
                    $repeats = $data->event_repeats;
                } else {
                    $repeats = 0;
                }
                $return = $pre . '
							<h3>' . __('Recurring', 'my-calendar') . '</h3>
								<div class="inside">' . $prev . '
									<fieldset>
									<legend>' . __('Recurring Events', 'my-calendar') . '</legend>
										<p>
											<label for="e_repeats">' . __('Repeats', 'my-calendar') . ' <input type="text" name="event_repeats" aria-labelledby="e_repeats_label" id="e_repeats" size="1" value="' . $repeats . '" /> <span id="e_repeats_label">' . __('times', 'my-calendar') . '</span>, </label>
											<label for="e_every">' . __('every', 'my-calendar') . '</label> <input type="number" name="event_every" id="e_every" size="1" min="1" max="9" maxlength="1" value="' . $every . '" /> 
											<label for="e_recur" class="screen-reader-text">' . __('Units', 'my-calendar') . '</label> 
											<select name="event_recur" id="e_recur">
												' . mc_recur_options($recur) . '
											</select><br />
											' . __('Your entry is the number of events after the first occurrence of the event: a recurrence of <em>2</em> means the event will happen three times.', 'my-calendar') . '
										</p>
									</fieldset>	
								</div>
							' . $post;
            } else {
                $return = '
				<div>' . $prev . '		
					<input type="hidden" name="event_repeats" value="0" />
					<input type="hidden" name="event_recur" value="S" />
				</div>';
            }
            break;
        case 'event_access':
            if ($show_block) {
                $label = __('Event Access', 'my-calendar');
                $return = $pre . '
						<h3>' . $label . '</h3>
							<div class="inside">		
								' . mc_event_accessibility('', $data, $label) . apply_filters('mc_event_access_fields', '', $has_data, $data) . '						
							</div>' . $post;
            }
            break;
        case 'event_open':
            if ($show_block) {
                $return = $pre . '
				<h3>' . __('Event Registration Settings', 'my-calendar') . '</h3>
				<div class="inside">
					<fieldset>
					<legend>' . __('Event Registration', 'my-calendar') . '</legend>
					' . apply_filters('mc_event_registration', '', $has_data, $data, 'admin') . '		
					</fieldset>
				</div>
				' . $post;
            } else {
                $open = $has_data ? $data->event_open : '2';
                $tickets = $has_data ? esc_attr(esc_url($data->event_tickets)) : '';
                $registration = $has_data ? esc_attr($data->event_registration) : '';
                $return = '
				<div>
					<input type="hidden" name="event_open" value="' . $open . '" />
					<input type="hidden"  name="event_tickets" value="' . $tickets . '" />
					<input type="hidden" name="event_registration" value="' . $registration . '" />
				</div>';
            }
            break;
        case 'event_location':
            if ($show_block) {
                $return = mc_locations_fields($has_data, $data, 'event');
            } else {
                if ($has_data) {
                    $return = "\n\t\t\t\t<div>\n\t\t\t\t\t<input type='hidden' name='event_label' value='" . esc_attr(stripslashes($data->event_label)) . "' />\n\t\t\t\t\t<input type='hidden' name='event_street' value='" . stripslashes($data->event_street) . "' />\n\t\t\t\t\t<input type='hidden' name='event_street2' value='" . stripslashes($data->event_street2) . "' />\n\t\t\t\t\t<input type='hidden' name='event_phone' value='" . stripslashes($data->event_phone) . "' />\n\t\t\t\t\t<input type='hidden' name='event_phone2' value='" . stripslashes($data->event_phone2) . "' />\n\t\t\t\t\t<input type='hidden' name='event_city' value='" . stripslashes($data->event_city) . "' />\n\t\t\t\t\t<input type='hidden' name='event_state' value='" . stripslashes($data->event_state) . "' />\n\t\t\t\t\t<input type='hidden' name='event_postcode' value='" . stripslashes($data->event_postcode) . "' />\n\t\t\t\t\t<input type='hidden' name='event_region' value='" . stripslashes($data->event_region) . "' />\n\t\t\t\t\t<input type='hidden' name='event_country' value='" . stripslashes($data->event_country) . "' />\n\t\t\t\t\t<input type='hidden' name='event_zoom' value='" . stripslashes($data->event_zoom) . "' />\n\t\t\t\t\t<input type='hidden' name='event_url' value='" . stripslashes($data->event_url) . "' />\n\t\t\t\t\t<input type='hidden' name='event_latitude' value='" . stripslashes($data->event_latitude) . "' />\n\t\t\t\t\t<input type='hidden' name='event_longitude' value='" . stripslashes($data->event_longitude) . "' />\n\t\t\t\t</div>";
                }
            }
            break;
        default:
            return;
    }
    echo apply_filters('mc_show_block', $return, $data, $field);
}