Version Description
- fixed previous meta not getting deleted from recurrences resulting in non-saved information such as a changed featured image or location
- fixed newly submitted recurrences first saved in draft or pending mode not creating new events without a reschedule
- fixed export settings button not working in MultiSite
- fixed CSS issue in search form advanced field dropdowns on firefox
- fixed PHP warning when displaying locations and events map via shortcode (kudos @Beee)
- fixed minor PHP warning on category admin pages where image isn't defined (kudos @Beee)
- fixed booking admin 'Add Note' button not being translatable
- added fifth day of month in recurrences pattern
- added ability to change event times on recurring events without recreating recurrences
Download this release
Release Info
Developer | netweblogic |
Plugin | Events Manager |
Version | 5.7.3 |
Comparing to | |
See all releases |
Code changes from version 5.7.2 to 5.7.3
- admin/em-bookings.php +1 -1
- admin/em-ms-options.php +2 -2
- admin/em-options.php +3 -4
- classes/em-categories-taxonomy.php +1 -1
- classes/em-event.php +48 -35
- em-shortcode.php +4 -0
- events-manager.php +1 -1
- includes/css/events_manager.css +1 -0
- readme.txt +13 -2
- templates/forms/event/recurring-when.php +12 -11
admin/em-bookings.php
CHANGED
@@ -472,7 +472,7 @@ function em_bookings_single(){
|
|
472 |
<textarea class="widefat" rows="5" name="booking_note"></textarea>
|
473 |
<input type="hidden" name="action" value="bookings_add_note" />
|
474 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('bookings_add_note'); ?>" />
|
475 |
-
<input type="submit" class="em-button button-primary" value="Add Note" />
|
476 |
</form>
|
477 |
</div>
|
478 |
</div>
|
472 |
<textarea class="widefat" rows="5" name="booking_note"></textarea>
|
473 |
<input type="hidden" name="action" value="bookings_add_note" />
|
474 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('bookings_add_note'); ?>" />
|
475 |
+
<input type="submit" class="em-button button-primary" value="<?php esc_html_e('Add Note', 'events-manager'); ?>" />
|
476 |
</form>
|
477 |
</div>
|
478 |
</div>
|
admin/em-ms-options.php
CHANGED
@@ -66,7 +66,7 @@ function em_ms_admin_options_page() {
|
|
66 |
$bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','events-manager'), $bookings_placeholders, $events_placeholders, $locations_placeholders);
|
67 |
|
68 |
global $save_button;
|
69 |
-
$save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit"
|
70 |
//Do some multisite checking here for reuse
|
71 |
?>
|
72 |
<script type="text/javascript" charset="utf-8"><?php include(EM_DIR.'/includes/js/admin-settings.js'); ?></script>
|
@@ -189,7 +189,7 @@ function em_ms_admin_options_page() {
|
|
189 |
</div> <!-- .em-menu-pages -->
|
190 |
|
191 |
<p class="submit">
|
192 |
-
<input type="submit"
|
193 |
<input type="hidden" name="em-submitted" value="1" />
|
194 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" />
|
195 |
</p>
|
66 |
$bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','events-manager'), $bookings_placeholders, $events_placeholders, $locations_placeholders);
|
67 |
|
68 |
global $save_button;
|
69 |
+
$save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit" class="button-primary" name="Submit" value="'. __( 'Save Changes', 'events-manager') .' ('. __('All','events-manager') .')" /></p></td></tr>';
|
70 |
//Do some multisite checking here for reuse
|
71 |
?>
|
72 |
<script type="text/javascript" charset="utf-8"><?php include(EM_DIR.'/includes/js/admin-settings.js'); ?></script>
|
189 |
</div> <!-- .em-menu-pages -->
|
190 |
|
191 |
<p class="submit">
|
192 |
+
<input type="submit" class="button-primary" name="Submit" value="<?php esc_attr_e( 'Save Changes', 'events-manager'); ?>" />
|
193 |
<input type="hidden" name="em-submitted" value="1" />
|
194 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" />
|
195 |
</p>
|
admin/em-options.php
CHANGED
@@ -226,8 +226,7 @@ function em_options_save(){
|
|
226 |
header('Content-Disposition: attachment; filename="events-manager-settings.txt"');
|
227 |
echo json_encode($options);
|
228 |
exit();
|
229 |
-
}
|
230 |
-
if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'export_ms_em_settings' && check_admin_referer('export_ms_em_settings') && is_multisite() && is_super_admin() ){
|
231 |
//delete transients, and add a flag to recheck dev version next time round
|
232 |
global $EM_MS_Globals, $wpdb;
|
233 |
$options = array();
|
@@ -346,7 +345,7 @@ function em_admin_options_page() {
|
|
346 |
$bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','events-manager'), $bookings_placeholders, $events_placeholders, $locations_placeholders);
|
347 |
|
348 |
global $save_button;
|
349 |
-
$save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit" class="button-primary"
|
350 |
|
351 |
if( defined('EM_SETTINGS_TABS') && EM_SETTINGS_TABS ){
|
352 |
$tabs_enabled = true;
|
@@ -416,7 +415,7 @@ function em_admin_options_page() {
|
|
416 |
*/ ?>
|
417 |
|
418 |
<p class="submit">
|
419 |
-
<input type="submit"
|
420 |
<input type="hidden" name="em-submitted" value="1" />
|
421 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" />
|
422 |
</p>
|
226 |
header('Content-Disposition: attachment; filename="events-manager-settings.txt"');
|
227 |
echo json_encode($options);
|
228 |
exit();
|
229 |
+
}elseif( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'export_em_ms_settings' && check_admin_referer('export_em_ms_settings') && is_multisite() && is_super_admin() ){
|
|
|
230 |
//delete transients, and add a flag to recheck dev version next time round
|
231 |
global $EM_MS_Globals, $wpdb;
|
232 |
$options = array();
|
345 |
$bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','events-manager'), $bookings_placeholders, $events_placeholders, $locations_placeholders);
|
346 |
|
347 |
global $save_button;
|
348 |
+
$save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit" class="button-primary" name="Submit" value="'. __( 'Save Changes', 'events-manager') .' ('. __('All','events-manager') .')" /></p></td></tr>';
|
349 |
|
350 |
if( defined('EM_SETTINGS_TABS') && EM_SETTINGS_TABS ){
|
351 |
$tabs_enabled = true;
|
415 |
*/ ?>
|
416 |
|
417 |
<p class="submit">
|
418 |
+
<input type="submit" class="button-primary" name="Submit" value="<?php esc_attr_e( 'Save Changes', 'events-manager'); ?>" />
|
419 |
<input type="hidden" name="em-submitted" value="1" />
|
420 |
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" />
|
421 |
</p>
|
classes/em-categories-taxonomy.php
CHANGED
@@ -39,7 +39,7 @@ class EM_Categories_Taxonomy{
|
|
39 |
|
40 |
public static function form($tag){
|
41 |
$category_color = '#FFFFFF';
|
42 |
-
$category_image = '';
|
43 |
if( $tag != EM_TAXONOMY_CATEGORY ){ //not an add new tag form
|
44 |
$EM_Category = new EM_Category($tag);
|
45 |
$category_color = $EM_Category->get_color();
|
39 |
|
40 |
public static function form($tag){
|
41 |
$category_color = '#FFFFFF';
|
42 |
+
$category_image = $category_image_id = '';
|
43 |
if( $tag != EM_TAXONOMY_CATEGORY ){ //not an add new tag form
|
44 |
$EM_Category = new EM_Category($tag);
|
45 |
$category_color = $EM_Category->get_color();
|
classes/em-event.php
CHANGED
@@ -424,39 +424,39 @@ class EM_Event extends EM_Object{
|
|
424 |
$this->post_type = 'event-recurring';
|
425 |
}
|
426 |
|
427 |
-
//Dates and Times - ignored if event is recurring being updated (not new) and not specifically chosen to reschedule event
|
428 |
if( !$this->is_recurring() || (empty($this->event_id) || !empty($_REQUEST['event_reschedule'])) ){
|
429 |
//Event Dates
|
430 |
$this->event_start_date = ( !empty($_POST['event_start_date']) ) ? wp_kses_data($_POST['event_start_date']) : '';
|
431 |
$this->event_end_date = ( !empty($_POST['event_end_date']) ) ? wp_kses_data($_POST['event_end_date']) : $this->event_start_date;
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
$this->$timeName = $match[1].":".$match[3].":00";
|
452 |
-
}else{
|
453 |
-
$this->$timeName = ($timeName == 'event_start_time') ? "00:00:00":$this->event_start_time;
|
454 |
}
|
|
|
|
|
|
|
455 |
}
|
456 |
-
//Start/End times should be available as timestamp
|
457 |
-
$this->start = strtotime($this->event_start_date." ".$this->event_start_time);
|
458 |
-
$this->end = strtotime($this->event_end_date." ".$this->event_end_time);
|
459 |
}
|
|
|
|
|
|
|
460 |
|
461 |
//Get Location info
|
462 |
if( !get_option('dbem_locations_enabled') || (!empty($_POST['no_location']) && !get_option('dbem_require_location',true)) || (empty($_POST['location_id']) && !get_option('dbem_require_location',true) && get_option('dbem_use_select_for_locations')) ){
|
@@ -2184,6 +2184,10 @@ class EM_Event extends EM_Object{
|
|
2184 |
global $wpdb;
|
2185 |
$event_ids = $post_ids = array();
|
2186 |
if( $this->can_manage('edit_events','edit_others_events') && ($this->is_published() || 'future' == $this->post_status) ){
|
|
|
|
|
|
|
|
|
2187 |
do_action('em_event_save_events_pre', $this); //actions/filters only run if event is recurring
|
2188 |
//Make template event index, post, and meta (we change event dates, timestamps, rsvp dates and other recurrence-relative info whilst saving each event recurrence)
|
2189 |
$event = $this->to_array(true); //event template - for index
|
@@ -2278,7 +2282,7 @@ class EM_Event extends EM_Object{
|
|
2278 |
//we go through all event main data and meta data, we delete and recreate all meta data
|
2279 |
$meta_inserts = array();
|
2280 |
//now unset some vars we don't need to deal with since we're just updating data in the wp_em_events and posts table
|
2281 |
-
unset( $event['event_date_created'], $event['recurrence_id'], $event['recurrence'], $event['event_start_date'], $event['event_end_date']
|
2282 |
$event['event_date_modified'] = current_time('mysql'); //since the recurrences are modified but not recreated
|
2283 |
unset( $post_fields['comment_count'], $post_fields['guid'], $post_fields['menu_order']);
|
2284 |
//now we go through the recurrences and check whether things relative to dates need to be changed
|
@@ -2301,8 +2305,8 @@ class EM_Event extends EM_Object{
|
|
2301 |
//add meta fields we deleted and are specific to this event
|
2302 |
$meta_fields['_event_start_date'] = $EM_Event->event_start_date;
|
2303 |
$meta_fields['_event_end_date'] = $EM_Event->event_end_date;
|
2304 |
-
$meta_fields['_start_ts'] = $EM_Event->
|
2305 |
-
$meta_fields['_end_ts'] = $EM_Event->
|
2306 |
//overwrite event and post tables
|
2307 |
$wpdb->update(EM_EVENTS_TABLE, $event, array('event_id' => $EM_Event->event_id));
|
2308 |
$wpdb->update($wpdb->posts, $post_fields, array('ID' => $EM_Event->post_id));
|
@@ -2313,7 +2317,7 @@ class EM_Event extends EM_Object{
|
|
2313 |
}
|
2314 |
//delete all meta
|
2315 |
if( !empty($post_ids) ){
|
2316 |
-
$wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id IN (".implode(',',
|
2317 |
}
|
2318 |
//insert the metas in one go, faster than one by one
|
2319 |
if( count($meta_inserts) > 0 ){
|
@@ -2528,10 +2532,19 @@ class EM_Event extends EM_Object{
|
|
2528 |
$current_week_day = ($current_week_day < 6) ? $current_week_day+1 : 0;
|
2529 |
}
|
2530 |
//Now grab from the array the x day of the month
|
2531 |
-
$matching_day =
|
2532 |
-
$
|
2533 |
-
|
2534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2535 |
}
|
2536 |
//add the number of days in this month to make start of next month
|
2537 |
$current_arr['mon'] += $this->recurrence_interval;
|
@@ -2583,7 +2596,7 @@ class EM_Event extends EM_Object{
|
|
2583 |
$EM_Event_Recurring = $this->get_event_recurrence();
|
2584 |
$recurrence = $this->to_array();
|
2585 |
$weekdays_name = array( translate('Sunday'),translate('Monday'),translate('Tuesday'),translate('Wednesday'),translate('Thursday'),translate('Friday'),translate('Saturday'));
|
2586 |
-
$monthweek_name = array('1' => __('the first %s of the month', 'events-manager'),'2' => __('the second %s of the month', 'events-manager'), '3' => __('the third %s of the month', 'events-manager'), '4' => __('the fourth %s of the month', 'events-manager'), '-1' => __('the last %s of the month', 'events-manager'));
|
2587 |
$output = sprintf (__('From %1$s to %2$s', 'events-manager'), $EM_Event_Recurring->event_start_date, $EM_Event_Recurring->event_end_date).", ";
|
2588 |
if ($EM_Event_Recurring->recurrence_freq == 'daily') {
|
2589 |
$freq_desc =__('everyday', 'events-manager');
|
424 |
$this->post_type = 'event-recurring';
|
425 |
}
|
426 |
|
427 |
+
//Dates and Times - dates ignored if event is recurring being updated (not new) and not specifically chosen to reschedule event
|
428 |
if( !$this->is_recurring() || (empty($this->event_id) || !empty($_REQUEST['event_reschedule'])) ){
|
429 |
//Event Dates
|
430 |
$this->event_start_date = ( !empty($_POST['event_start_date']) ) ? wp_kses_data($_POST['event_start_date']) : '';
|
431 |
$this->event_end_date = ( !empty($_POST['event_end_date']) ) ? wp_kses_data($_POST['event_end_date']) : $this->event_start_date;
|
432 |
+
}
|
433 |
+
//Sort out time
|
434 |
+
$this->event_all_day = ( !empty($_POST['event_all_day']) ) ? 1 : 0;
|
435 |
+
if( $this->event_all_day ){
|
436 |
+
$times_array = array('event_rsvp_time');
|
437 |
+
$this->event_start_time = '00:00:00';
|
438 |
+
$this->event_end_time = '23:59:59';
|
439 |
+
}else{
|
440 |
+
$times_array = array('event_start_time','event_end_time', 'event_rsvp_time');
|
441 |
+
}
|
442 |
+
foreach( $times_array as $timeName ){
|
443 |
+
$match = array();
|
444 |
+
if( !empty($_POST[$timeName]) && preg_match ( '/^([01]\d|[0-9]|2[0-3])(:([0-5]\d))? ?(AM|PM)?$/', $_POST[$timeName], $match ) ){
|
445 |
+
if( empty($match[3]) ) $match[3] = '00';
|
446 |
+
if( strlen($match[1]) == 1 ) $match[1] = '0'.$match[1];
|
447 |
+
if( !empty($match[4]) && $match[4] == 'PM' && $match[1] != 12 ){
|
448 |
+
$match[1] = 12+$match[1];
|
449 |
+
}elseif( !empty($match[4]) && $match[4] == 'AM' && $match[1] == 12 ){
|
450 |
+
$match[1] = '00';
|
|
|
|
|
|
|
451 |
}
|
452 |
+
$this->$timeName = $match[1].":".$match[3].":00";
|
453 |
+
}else{
|
454 |
+
$this->$timeName = ($timeName == 'event_start_time') ? "00:00:00":$this->event_start_time;
|
455 |
}
|
|
|
|
|
|
|
456 |
}
|
457 |
+
//Start/End times should be available as timestamp
|
458 |
+
$this->start = strtotime($this->event_start_date." ".$this->event_start_time);
|
459 |
+
$this->end = strtotime($this->event_end_date." ".$this->event_end_time);
|
460 |
|
461 |
//Get Location info
|
462 |
if( !get_option('dbem_locations_enabled') || (!empty($_POST['no_location']) && !get_option('dbem_require_location',true)) || (empty($_POST['location_id']) && !get_option('dbem_require_location',true) && get_option('dbem_use_select_for_locations')) ){
|
2184 |
global $wpdb;
|
2185 |
$event_ids = $post_ids = array();
|
2186 |
if( $this->can_manage('edit_events','edit_others_events') && ($this->is_published() || 'future' == $this->post_status) ){
|
2187 |
+
//check if there's any events already created, if not (such as when an event is first submitted for approval and then published), force a reschedule.
|
2188 |
+
if( $wpdb->get_var('SELECT COUNT(event_id) FROM '.EM_EVENTS_TABLE.' WHERE recurrence_id='. absint($this->event_id)) == 0 ){
|
2189 |
+
$this->recurring_reschedule = true;
|
2190 |
+
}
|
2191 |
do_action('em_event_save_events_pre', $this); //actions/filters only run if event is recurring
|
2192 |
//Make template event index, post, and meta (we change event dates, timestamps, rsvp dates and other recurrence-relative info whilst saving each event recurrence)
|
2193 |
$event = $this->to_array(true); //event template - for index
|
2282 |
//we go through all event main data and meta data, we delete and recreate all meta data
|
2283 |
$meta_inserts = array();
|
2284 |
//now unset some vars we don't need to deal with since we're just updating data in the wp_em_events and posts table
|
2285 |
+
unset( $event['event_date_created'], $event['recurrence_id'], $event['recurrence'], $event['event_start_date'], $event['event_end_date'] );
|
2286 |
$event['event_date_modified'] = current_time('mysql'); //since the recurrences are modified but not recreated
|
2287 |
unset( $post_fields['comment_count'], $post_fields['guid'], $post_fields['menu_order']);
|
2288 |
//now we go through the recurrences and check whether things relative to dates need to be changed
|
2305 |
//add meta fields we deleted and are specific to this event
|
2306 |
$meta_fields['_event_start_date'] = $EM_Event->event_start_date;
|
2307 |
$meta_fields['_event_end_date'] = $EM_Event->event_end_date;
|
2308 |
+
$meta_fields['_start_ts'] = strtotime($EM_Event->event_start_date." ".$this->event_start_time);
|
2309 |
+
$meta_fields['_end_ts'] = strtotime($EM_Event->event_end_date." ".$this->event_end_time);
|
2310 |
//overwrite event and post tables
|
2311 |
$wpdb->update(EM_EVENTS_TABLE, $event, array('event_id' => $EM_Event->event_id));
|
2312 |
$wpdb->update($wpdb->posts, $post_fields, array('ID' => $EM_Event->post_id));
|
2317 |
}
|
2318 |
//delete all meta
|
2319 |
if( !empty($post_ids) ){
|
2320 |
+
$wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id IN (".implode(',', $post_ids).")");
|
2321 |
}
|
2322 |
//insert the metas in one go, faster than one by one
|
2323 |
if( count($meta_inserts) > 0 ){
|
2532 |
$current_week_day = ($current_week_day < 6) ? $current_week_day+1 : 0;
|
2533 |
}
|
2534 |
//Now grab from the array the x day of the month
|
2535 |
+
$matching_day = false;
|
2536 |
+
if( $this->recurrence_byweekno > 0 ){
|
2537 |
+
if( !empty($matching_month_days[$this->recurrence_byweekno-1]) ){
|
2538 |
+
$matching_day = $matching_month_days[$this->recurrence_byweekno-1];
|
2539 |
+
}
|
2540 |
+
}else{
|
2541 |
+
$matching_day = array_pop($matching_month_days);
|
2542 |
+
}
|
2543 |
+
if( !empty($matching_day) ){
|
2544 |
+
$matching_date = strtotime(date('Y-m',$current_date).'-'.$matching_day);
|
2545 |
+
if($matching_date >= $start_date && $matching_date <= $end_date){
|
2546 |
+
$matching_days[] = $matching_date;
|
2547 |
+
}
|
2548 |
}
|
2549 |
//add the number of days in this month to make start of next month
|
2550 |
$current_arr['mon'] += $this->recurrence_interval;
|
2596 |
$EM_Event_Recurring = $this->get_event_recurrence();
|
2597 |
$recurrence = $this->to_array();
|
2598 |
$weekdays_name = array( translate('Sunday'),translate('Monday'),translate('Tuesday'),translate('Wednesday'),translate('Thursday'),translate('Friday'),translate('Saturday'));
|
2599 |
+
$monthweek_name = array('1' => __('the first %s of the month', 'events-manager'),'2' => __('the second %s of the month', 'events-manager'), '3' => __('the third %s of the month', 'events-manager'), '4' => __('the fourth %s of the month', 'events-manager'), '5' => __('the fifth %s of the month', 'events-manager'), '-1' => __('the last %s of the month', 'events-manager'));
|
2600 |
$output = sprintf (__('From %1$s to %2$s', 'events-manager'), $EM_Event_Recurring->event_start_date, $EM_Event_Recurring->event_end_date).", ";
|
2601 |
if ($EM_Event_Recurring->recurrence_freq == 'daily') {
|
2602 |
$freq_desc =__('everyday', 'events-manager');
|
em-shortcode.php
CHANGED
@@ -39,6 +39,8 @@ function em_get_locations_map_shortcode($args){
|
|
39 |
$args['height'] = $height;
|
40 |
//assign random number for element id reference
|
41 |
$args['random_id'] = substr(md5(rand().rand()),0,5);
|
|
|
|
|
42 |
if( !empty($args['map_style']) ){
|
43 |
$style= base64_decode($args['map_style']);
|
44 |
$style_json= json_decode($style);
|
@@ -74,6 +76,8 @@ function em_get_events_map_shortcode($args){
|
|
74 |
$args['height'] = $height;
|
75 |
//assign random number for element id reference
|
76 |
$args['random_id'] = substr(md5(rand().rand()),0,5);
|
|
|
|
|
77 |
if( !empty($args['map_style']) ){
|
78 |
$style= base64_decode($args['map_style']);
|
79 |
$style_json= json_decode($style);
|
39 |
$args['height'] = $height;
|
40 |
//assign random number for element id reference
|
41 |
$args['random_id'] = substr(md5(rand().rand()),0,5);
|
42 |
+
//add JSON style to map
|
43 |
+
$style = '';
|
44 |
if( !empty($args['map_style']) ){
|
45 |
$style= base64_decode($args['map_style']);
|
46 |
$style_json= json_decode($style);
|
76 |
$args['height'] = $height;
|
77 |
//assign random number for element id reference
|
78 |
$args['random_id'] = substr(md5(rand().rand()),0,5);
|
79 |
+
//add JSON style to map
|
80 |
+
$style = '';
|
81 |
if( !empty($args['map_style']) ){
|
82 |
$style= base64_decode($args['map_style']);
|
83 |
$style_json= json_decode($style);
|
events-manager.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Events Manager
|
4 |
-
Version: 5.7.
|
5 |
Plugin URI: http://wp-events-plugin.com
|
6 |
Description: Event registration and booking management for WordPress. Recurring events, locations, google maps, rss, ical, booking registration and more!
|
7 |
Author: Marcus Sykes
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Events Manager
|
4 |
+
Version: 5.7.3
|
5 |
Plugin URI: http://wp-events-plugin.com
|
6 |
Description: Event registration and booking management for WordPress. Recurring events, locations, google maps, rss, ical, booking registration and more!
|
7 |
Author: Marcus Sykes
|
includes/css/events_manager.css
CHANGED
@@ -19,6 +19,7 @@ div#em-loading { position:absolute; width:100%; height:100%; background:#FFFFFF
|
|
19 |
div.css-search input, div.css-search select, div.css-search option, div.css-search div, div.css-search span, div.css-search button {
|
20 |
width:auto; height:auto; margin:0; padding:0; float:none; display:inline-block; font-size:14px; /* reset everything */
|
21 |
}
|
|
|
22 |
div.css-search input, div.css-search select { padding:5px; }
|
23 |
div.css-search { background:#fff; border:1px solid #dedede; border-radius:3px; padding:5px; min-height:40px; position:relative; -moz-border-radius:3px; -webkit-border-radius:3px; }
|
24 |
/* Main Search */
|
19 |
div.css-search input, div.css-search select, div.css-search option, div.css-search div, div.css-search span, div.css-search button {
|
20 |
width:auto; height:auto; margin:0; padding:0; float:none; display:inline-block; font-size:14px; /* reset everything */
|
21 |
}
|
22 |
+
div.css-search option { display:block; }
|
23 |
div.css-search input, div.css-search select { padding:5px; }
|
24 |
div.css-search { background:#fff; border:1px solid #dedede; border-radius:3px; padding:5px; min-height:40px; position:relative; -moz-border-radius:3px; -webkit-border-radius:3px; }
|
25 |
/* Main Search */
|
readme.txt
CHANGED
@@ -4,8 +4,8 @@ Donate link: http://wp-events-plugin.com
|
|
4 |
Tags: bookings, calendar, tickets, events, buddypress, event management, google maps, maps, locations, registration
|
5 |
Text Domain: events-manager
|
6 |
Requires at least: 3.5
|
7 |
-
Tested up to: 4.
|
8 |
-
Stable tag: 5.7.
|
9 |
|
10 |
Fully featured event registration management including recurring events, locations management, calendar, Google map integration, booking management
|
11 |
|
@@ -99,6 +99,17 @@ See our [FAQ](http://wp-events-plugin.com/documentation/faq/) page, which is upd
|
|
99 |
6. Manage attendees with various booking reports
|
100 |
|
101 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
= 5.7.2 =
|
103 |
* fixed subsite events in MS Global mode not being able to save new events and resulting in orphaned entries in wp_em_events table
|
104 |
* added admin tool to allow removal of orphaned events in wp_em_events database table
|
4 |
Tags: bookings, calendar, tickets, events, buddypress, event management, google maps, maps, locations, registration
|
5 |
Text Domain: events-manager
|
6 |
Requires at least: 3.5
|
7 |
+
Tested up to: 4.8
|
8 |
+
Stable tag: 5.7.3
|
9 |
|
10 |
Fully featured event registration management including recurring events, locations management, calendar, Google map integration, booking management
|
11 |
|
99 |
6. Manage attendees with various booking reports
|
100 |
|
101 |
== Changelog ==
|
102 |
+
= 5.7.3 =
|
103 |
+
* fixed previous meta not getting deleted from recurrences resulting in non-saved information such as a changed featured image or location
|
104 |
+
* fixed newly submitted recurrences first saved in draft or pending mode not creating new events without a reschedule
|
105 |
+
* fixed export settings button not working in MultiSite
|
106 |
+
* fixed CSS issue in search form advanced field dropdowns on firefox
|
107 |
+
* fixed PHP warning when displaying locations and events map via shortcode (kudos @Beee)
|
108 |
+
* fixed minor PHP warning on category admin pages where image isn't defined (kudos @Beee)
|
109 |
+
* fixed booking admin 'Add Note' button not being translatable
|
110 |
+
* added fifth day of month in recurrences pattern
|
111 |
+
* added ability to change event times on recurring events without recreating recurrences
|
112 |
+
|
113 |
= 5.7.2 =
|
114 |
* fixed subsite events in MS Global mode not being able to save new events and resulting in orphaned entries in wp_em_events table
|
115 |
* added admin tool to allow removal of orphaned events in wp_em_events database table
|
templates/forms/event/recurring-when.php
CHANGED
@@ -5,12 +5,19 @@ $days_names = em_get_days_names();
|
|
5 |
$hours_format = em_get_hour_format();
|
6 |
$classes = array();
|
7 |
?>
|
8 |
-
|
9 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
<?php if( !empty($EM_Event->event_id) ): ?>
|
11 |
<div class="recurrence-reschedule-warning">
|
12 |
<p><em><?php echo sprintf(esc_html__('Current Recurrence Pattern: %s', 'events-manager'), $EM_Event->get_recurrence_description()); ?></em></p>
|
13 |
-
<p><strong><?php esc_html_e( 'Modifications to event
|
14 |
<p>
|
15 |
<a href="<?php echo esc_url( add_query_arg(array('scope'=>'all', 'recurrence_id'=>$EM_Event->event_id), em_get_events_admin_url()) ); ?>">
|
16 |
<strong><?php esc_html_e('You can edit individual recurrences and disassociate them with this recurring event.', 'events-manager'); ?></strong>
|
@@ -45,7 +52,7 @@ $classes = array();
|
|
45 |
<p class="alternate-selector" id="monthly-selector" style="display:inline;">
|
46 |
<select id="monthly-modifier" name="recurrence_byweekno">
|
47 |
<?php
|
48 |
-
$weekno_options = array ("1" => __ ( 'first', 'events-manager'), '2' => __ ( 'second', 'events-manager'), '3' => __ ( 'third', 'events-manager'), '4' => __ ( 'fourth', 'events-manager'), '-1' => __ ( 'last', 'events-manager') );
|
49 |
em_option_items ( $weekno_options, $EM_Event->recurrence_byweekno );
|
50 |
?>
|
51 |
</select>
|
@@ -64,13 +71,6 @@ $classes = array();
|
|
64 |
<input class="em-date-end em-date-input-loc" type="text" />
|
65 |
<input class="em-date-input" type="hidden" name="event_end_date" value="<?php echo $EM_Event->event_end_date ?>" />
|
66 |
</p>
|
67 |
-
<p class="em-time-range">
|
68 |
-
<?php _e('Events start from','events-manager'); ?>
|
69 |
-
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="event_start_time" value="<?php echo date( $hours_format, $EM_Event->start ); ?>" />
|
70 |
-
<?php _e('to','events-manager'); ?>
|
71 |
-
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="event_end_time" value="<?php echo date( $hours_format, $EM_Event->end ); ?>" />
|
72 |
-
<?php _e('All day','events-manager'); ?> <input type="checkbox" class="em-time-allday" name="event_all_day" id="em-time-all-day" value="1" <?php if(!empty($EM_Event->event_all_day)) echo 'checked="checked"'; ?> />
|
73 |
-
</p>
|
74 |
<p class="em-duration-range">
|
75 |
<?php echo sprintf(__('Each event spans %s day(s)','events-manager'), '<input id="end-days" type="text" size="8" maxlength="8" name="recurrence_days" value="'. $EM_Event->recurrence_days .'" />'); ?>
|
76 |
</p>
|
@@ -88,4 +88,5 @@ $classes = array();
|
|
88 |
<input type="hidden" name="event_reschedule" class="em-reschedule-value" value="<?php echo empty($_REQUEST['reschedule']) ? 0:1 ?>" />
|
89 |
</div>
|
90 |
<?php endif; ?>
|
|
|
91 |
</div>
|
5 |
$hours_format = em_get_hour_format();
|
6 |
$classes = array();
|
7 |
?>
|
8 |
+
<div id="em-form-recurrence" class="event-form-recurrence event-form-when">
|
9 |
+
<p class="em-time-range">
|
10 |
+
<?php _e('Events start from','events-manager'); ?>
|
11 |
+
<input id="start-time" class="em-time-input em-time-start" type="text" size="8" maxlength="8" name="event_start_time" value="<?php echo date( $hours_format, $EM_Event->start ); ?>" />
|
12 |
+
<?php _e('to','events-manager'); ?>
|
13 |
+
<input id="end-time" class="em-time-input em-time-end" type="text" size="8" maxlength="8" name="event_end_time" value="<?php echo date( $hours_format, $EM_Event->end ); ?>" />
|
14 |
+
<?php _e('All day','events-manager'); ?> <input type="checkbox" class="em-time-allday" name="event_all_day" id="em-time-all-day" value="1" <?php if(!empty($EM_Event->event_all_day)) echo 'checked="checked"'; ?> />
|
15 |
+
</p>
|
16 |
+
<div class="<?php if( !empty($EM_Event->event_id) ) echo 'em-recurrence-reschedule'; ?>">
|
17 |
<?php if( !empty($EM_Event->event_id) ): ?>
|
18 |
<div class="recurrence-reschedule-warning">
|
19 |
<p><em><?php echo sprintf(esc_html__('Current Recurrence Pattern: %s', 'events-manager'), $EM_Event->get_recurrence_description()); ?></em></p>
|
20 |
+
<p><strong><?php esc_html_e( 'Modifications to event dates will cause all recurrences of this event to be deleted and recreated, previous bookings will be deleted.', 'events-manager'); ?></strong></p>
|
21 |
<p>
|
22 |
<a href="<?php echo esc_url( add_query_arg(array('scope'=>'all', 'recurrence_id'=>$EM_Event->event_id), em_get_events_admin_url()) ); ?>">
|
23 |
<strong><?php esc_html_e('You can edit individual recurrences and disassociate them with this recurring event.', 'events-manager'); ?></strong>
|
52 |
<p class="alternate-selector" id="monthly-selector" style="display:inline;">
|
53 |
<select id="monthly-modifier" name="recurrence_byweekno">
|
54 |
<?php
|
55 |
+
$weekno_options = array ("1" => __ ( 'first', 'events-manager'), '2' => __ ( 'second', 'events-manager'), '3' => __ ( 'third', 'events-manager'), '4' => __ ( 'fourth', 'events-manager'), '5' => __ ( 'fifth', 'events-manager'), '-1' => __ ( 'last', 'events-manager') );
|
56 |
em_option_items ( $weekno_options, $EM_Event->recurrence_byweekno );
|
57 |
?>
|
58 |
</select>
|
71 |
<input class="em-date-end em-date-input-loc" type="text" />
|
72 |
<input class="em-date-input" type="hidden" name="event_end_date" value="<?php echo $EM_Event->event_end_date ?>" />
|
73 |
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
<p class="em-duration-range">
|
75 |
<?php echo sprintf(__('Each event spans %s day(s)','events-manager'), '<input id="end-days" type="text" size="8" maxlength="8" name="recurrence_days" value="'. $EM_Event->recurrence_days .'" />'); ?>
|
76 |
</p>
|
88 |
<input type="hidden" name="event_reschedule" class="em-reschedule-value" value="<?php echo empty($_REQUEST['reschedule']) ? 0:1 ?>" />
|
89 |
</div>
|
90 |
<?php endif; ?>
|
91 |
+
</div>
|
92 |
</div>
|