My Calendar - Version 1.11.3

Version Description

  • Fatal error in PHP 5.4+ https://bugs.php.net/bug.php?id=54657
  • Bug fix: {date} and {time} template tags not rendered in details link when run in a template.
  • Bug fix: upgrade database button placement off-screen
  • Bug fix: layout on stylesheet editor caused usability problems
  • Bug fix: added line break in iCal output.
  • Change: added alt attribute to category icons in appropriate contexts.
  • My Calendar 2.0 beta added to subversion repository. Here there be bugs.
Download this release

Release Info

Developer joedolson
Plugin Icon 128x128 My Calendar
Version 1.11.3
Comparing to
See all releases

Code changes from version 1.11.2 to 1.11.3

mc-styles.css CHANGED
@@ -34,6 +34,7 @@ ul.links li {float: left;margin: 0 5px 10px;font-size: .9em;}
34
.mc_support {font-family:'Courier New';background:#fff;padding:5px;}
35
.jd-my-calendar .button-primary { position: absolute; top: -24px; right: 10px;}
36
.jd-my-calendar .button-primary.group { top: -40px; }
37
.template-editor, .style-editor { width: 98%; }
38
.roles { width: 24%; float: left; min-height: 300px; }
39
.mc-settings li { display: inline; padding: 3px; margin: 3px; }
@@ -43,4 +44,6 @@ ul.links li {float: left;margin: 0 5px 10px;font-size: .9em;}
43
.jd-my-calendar textarea { width: 100%; }
44
.mc-clear { clear: both; }
45
.jd-my-calendar pre { background: #fff; padding: 5px; border: 1px solid #ddd; box-shadow: 1px 1px 2px #ddd; }
46
- .jd-my-calendar label span { font-size: .9em; color: #c33; }
34
.mc_support {font-family:'Courier New';background:#fff;padding:5px;}
35
.jd-my-calendar .button-primary { position: absolute; top: -24px; right: 10px;}
36
.jd-my-calendar .button-primary.group { top: -40px; }
37
+ .jd-my-calendar #message .button-primary { position: static; }
38
.template-editor, .style-editor { width: 98%; }
39
.roles { width: 24%; float: left; min-height: 300px; }
40
.mc-settings li { display: inline; padding: 3px; margin: 3px; }
44
.jd-my-calendar textarea { width: 100%; }
45
.mc-clear { clear: both; }
46
.jd-my-calendar pre { background: #fff; padding: 5px; border: 1px solid #ddd; box-shadow: 1px 1px 2px #ddd; }
47
+ .jd-my-calendar label span { font-size: .9em; color: #c33; }
48
+ .jd-my-calendar .button-adjust { top: 10px; right: 0; }
49
+ .jd-my-calendar hr { width: 20%; margin: 0 auto; border: none; border-top: 1px solid #ccc;}
my-calendar-event-manager.php CHANGED
@@ -1102,7 +1102,7 @@ function mc_event_is_grouped( $group_id ) {
1102
}
1103
}
1104
1105
- function mc_check_data($action,$_POST, $i) {
1106
global $wpdb, $current_user, $users_entries;
1107
$mcdb = $wpdb;
1108
@@ -1116,33 +1116,33 @@ $recurring_ok = 0;
1116
$submit=array();
1117
1118
if ( get_magic_quotes_gpc() ) {
1119
- $_POST = array_map( 'stripslashes_deep', $_POST );
1120
}
1121
1122
- if (!wp_verify_nonce($_POST['event_nonce_name'],'event_nonce')) {
1123
return;
1124
}
1125
1126
$errors = "";
1127
if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
1128
- $title = !empty($_POST['event_title']) ? trim($_POST['event_title']) : '';
1129
- $desc = !empty($_POST['content']) ? trim($_POST['content']) : '';
1130
- $short = !empty($_POST['event_short']) ? trim($_POST['event_short']) : '';
1131
- $recur = !empty($_POST['event_recur']) ? trim($_POST['event_recur']) : '';
1132
// if this is a all weekdays event, and it's been scheduled to start on a weekend, the math gets nasty.
1133
// ...AND there's no reason to allow it, since weekday events will NEVER happen on the weekend.
1134
- if ( $recur == 'E' && ( date( 'w', strtotime( $_POST['event_begin'][$i] ) ) == 0 || date( 'w', strtotime( $_POST['event_begin'][$i] ) ) == 6 ) ) {
1135
- if ( date( 'w', strtotime( $_POST['event_begin'][$i] ) ) == 0 ) {
1136
- $newbegin = my_calendar_add_date( $_POST['event_begin'][$i], 1 );
1137
- if ( !empty( $_POST['event_end'][$i] ) ) {
1138
- $newend = my_calendar_add_date( $_POST['event_end'][$i], 1 );
1139
} else {
1140
$newend = $newbegin;
1141
}
1142
- } else if ( date( 'w', strtotime( $_POST['event_begin'][$i] ) ) == 6 ) {
1143
- $newbegin = my_calendar_add_date( $_POST['event_begin'][$i], 2 );
1144
- if ( !empty( $_POST['event_end'][$i] ) ) {
1145
- $newend = my_calendar_add_date( $_POST['event_end'][$i], 2 );
1146
} else {
1147
$newend = $newbegin;
1148
}
@@ -1150,29 +1150,29 @@ if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
1150
$begin = $newbegin;
1151
$end = $newend;
1152
} else {
1153
- $begin = !empty($_POST['event_begin'][$i]) ? trim($_POST['event_begin'][$i]) : '';
1154
- $end = !empty($_POST['event_end'][$i]) ? trim($_POST['event_end'][$i]) : $begin;
1155
}
1156
- $time = !empty($_POST['event_time'][$i]) ? trim($_POST['event_time'][$i]) : '';
1157
- $endtime = !empty($_POST['event_endtime'][$i]) ? trim($_POST['event_endtime'][$i]) : '';
1158
- $repeats = !empty($_POST['event_repeats']) ? trim($_POST['event_repeats']) : 0;
1159
- $host = !empty($_POST['event_host']) ? $_POST['event_host'] : $current_user->ID;
1160
- $category = !empty($_POST['event_category']) ? $_POST['event_category'] : '';
1161
- $linky = !empty($_POST['event_link']) ? trim($_POST['event_link']) : '';
1162
- $expires = !empty($_POST['event_link_expires']) ? $_POST['event_link_expires'] : '0';
1163
- $approved = !empty($_POST['event_approved']) ? $_POST['event_approved'] : '0';
1164
- $location_preset = !empty($_POST['location_preset']) ? $_POST['location_preset'] : '';
1165
- $event_author = !empty($_POST['event_author']) ? $_POST['event_author'] : $current_user->ID;
1166
- $event_open = (isset($_POST['event_open']) && $_POST['event_open']!==0) ? $_POST['event_open'] : '2';
1167
- $event_group = !empty($_POST['event_group']) ? 1 : 0;
1168
- $event_flagged = ( !isset($_POST['event_flagged']) || $_POST['event_flagged']===0 )?0:1;
1169
- $event_image = esc_url_raw( $_POST['event_image'] );
1170
- $event_fifth_week = !empty($_POST['event_fifth_week']) ? 1 : 0;
1171
- $event_holiday = !empty($_POST['event_holiday']) ? 1 : 0;
1172
// get group id: if multiple events submitted, auto group OR if event being submitted is already part of a group; otherwise zero.
1173
- $group_id_submitted = (int) $_POST['event_group_id'];
1174
- $event_group_id = ( ( is_array($_POST['event_begin']) && count($_POST['event_begin'])>1 ) || mc_event_is_grouped( $group_id_submitted) )?$group_id_submitted:0;
1175
- $event_span = (!empty($_POST['event_span']) && $event_group_id != 0 ) ? 1 : 0;
1176
1177
// set location
1178
if ($location_preset != 'none') {
@@ -1192,19 +1192,19 @@ if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
1192
$event_zoom = $location->location_zoom;
1193
$event_phone = $location->location_phone;
1194
} else {
1195
- $event_label = !empty($_POST['event_label']) ? $_POST['event_label'] : '';
1196
- $event_street = !empty($_POST['event_street']) ? $_POST['event_street'] : '';
1197
- $event_street2 = !empty($_POST['event_street2']) ? $_POST['event_street2'] : '';
1198
- $event_city = !empty($_POST['event_city']) ? $_POST['event_city'] : '';
1199
- $event_state = !empty($_POST['event_state']) ? $_POST['event_state'] : '';
1200
- $event_postcode = !empty($_POST['event_postcode']) ? $_POST['event_postcode'] : '';
1201
- $event_region = !empty($_POST['event_region']) ? $_POST['event_region'] : '';
1202
- $event_country = !empty($_POST['event_country']) ? $_POST['event_country'] : '';
1203
- $event_url = !empty($_POST['event_url']) ? $_POST['event_url'] : '';
1204
- $event_longitude = !empty($_POST['event_longitude']) ? $_POST['event_longitude'] : '';
1205
- $event_latitude = !empty($_POST['event_latitude']) ? $_POST['event_latitude'] : '';
1206
- $event_zoom = !empty($_POST['event_zoom']) ? $_POST['event_zoom'] : '';
1207
- $event_phone = !empty($_POST['event_phone'])? $_POST['event_phone'] : '';
1208
}
1209
// Perform some validation on the submitted dates - this checks for valid years and months
1210
$date_format_one = '/^([0-9]{4})-([0][1-9])-([0-3][0-9])#x2F;';
1102
}
1103
}
1104
1105
+ function mc_check_data($action,$post, $i) {
1106
global $wpdb, $current_user, $users_entries;
1107
$mcdb = $wpdb;
1108
1116
$submit=array();
1117
1118
if ( get_magic_quotes_gpc() ) {
1119
+ $post = array_map( 'stripslashes_deep', $post );
1120
}
1121
1122
+ if (!wp_verify_nonce($post['event_nonce_name'],'event_nonce')) {
1123
return;
1124
}
1125
1126
$errors = "";
1127
if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
1128
+ $title = !empty($post['event_title']) ? trim($post['event_title']) : '';
1129
+ $desc = !empty($post['content']) ? trim($post['content']) : '';
1130
+ $short = !empty($post['event_short']) ? trim($post['event_short']) : '';
1131
+ $recur = !empty($post['event_recur']) ? trim($post['event_recur']) : '';
1132
// if this is a all weekdays event, and it's been scheduled to start on a weekend, the math gets nasty.
1133
// ...AND there's no reason to allow it, since weekday events will NEVER happen on the weekend.
1134
+ if ( $recur == 'E' && ( date( 'w', strtotime( $post['event_begin'][$i] ) ) == 0 || date( 'w', strtotime( $post['event_begin'][$i] ) ) == 6 ) ) {
1135
+ if ( date( 'w', strtotime( $post['event_begin'][$i] ) ) == 0 ) {
1136
+ $newbegin = my_calendar_add_date( $post['event_begin'][$i], 1 );
1137
+ if ( !empty( $post['event_end'][$i] ) ) {
1138
+ $newend = my_calendar_add_date( $post['event_end'][$i], 1 );
1139
} else {
1140
$newend = $newbegin;
1141
}
1142
+ } else if ( date( 'w', strtotime( $post['event_begin'][$i] ) ) == 6 ) {
1143
+ $newbegin = my_calendar_add_date( $post['event_begin'][$i], 2 );
1144
+ if ( !empty( $post['event_end'][$i] ) ) {
1145
+ $newend = my_calendar_add_date( $post['event_end'][$i], 2 );
1146
} else {
1147
$newend = $newbegin;
1148
}
1150
$begin = $newbegin;
1151
$end = $newend;
1152
} else {
1153
+ $begin = !empty($post['event_begin'][$i]) ? trim($post['event_begin'][$i]) : '';
1154
+ $end = !empty($post['event_end'][$i]) ? trim($post['event_end'][$i]) : $begin;
1155
}
1156
+ $time = !empty($post['event_time'][$i]) ? trim($post['event_time'][$i]) : '';
1157
+ $endtime = !empty($post['event_endtime'][$i]) ? trim($post['event_endtime'][$i]) : '';
1158
+ $repeats = !empty($post['event_repeats']) ? trim($post['event_repeats']) : 0;
1159
+ $host = !empty($post['event_host']) ? $post['event_host'] : $current_user->ID;
1160
+ $category = !empty($post['event_category']) ? $post['event_category'] : '';
1161
+ $linky = !empty($post['event_link']) ? trim($post['event_link']) : '';
1162
+ $expires = !empty($post['event_link_expires']) ? $post['event_link_expires'] : '0';
1163
+ $approved = !empty($post['event_approved']) ? $post['event_approved'] : '0';
1164
+ $location_preset = !empty($post['location_preset']) ? $post['location_preset'] : '';
1165
+ $event_author = !empty($post['event_author']) ? $post['event_author'] : $current_user->ID;
1166
+ $event_open = (isset($post['event_open']) && $post['event_open']!==0) ? $post['event_open'] : '2';
1167
+ $event_group = !empty($post['event_group']) ? 1 : 0;
1168
+ $event_flagged = ( !isset($post['event_flagged']) || $post['event_flagged']===0 )?0:1;
1169
+ $event_image = esc_url_raw( $post['event_image'] );
1170
+ $event_fifth_week = !empty($post['event_fifth_week']) ? 1 : 0;
1171
+ $event_holiday = !empty($post['event_holiday']) ? 1 : 0;
1172
// get group id: if multiple events submitted, auto group OR if event being submitted is already part of a group; otherwise zero.
1173
+ $group_id_submitted = (int) $post['event_group_id'];
1174
+ $event_group_id = ( ( is_array($post['event_begin']) && count($post['event_begin'])>1 ) || mc_event_is_grouped( $group_id_submitted) )?$group_id_submitted:0;
1175
+ $event_span = (!empty($post['event_span']) && $event_group_id != 0 ) ? 1 : 0;
1176
1177
// set location
1178
if ($location_preset != 'none') {
1192
$event_zoom = $location->location_zoom;
1193
$event_phone = $location->location_phone;
1194
} else {
1195
+ $event_label = !empty($post['event_label']) ? $post['event_label'] : '';
1196
+ $event_street = !empty($post['event_street']) ? $post['event_street'] : '';
1197
+ $event_street2 = !empty($post['event_street2']) ? $post['event_street2'] : '';
1198
+ $event_city = !empty($post['event_city']) ? $post['event_city'] : '';
1199
+ $event_state = !empty($post['event_state']) ? $post['event_state'] : '';
1200
+ $event_postcode = !empty($post['event_postcode']) ? $post['event_postcode'] : '';
1201
+ $event_region = !empty($post['event_region']) ? $post['event_region'] : '';
1202
+ $event_country = !empty($post['event_country']) ? $post['event_country'] : '';
1203
+ $event_url = !empty($post['event_url']) ? $post['event_url'] : '';
1204
+ $event_longitude = !empty($post['event_longitude']) ? $post['event_longitude'] : '';
1205
+ $event_latitude = !empty($post['event_latitude']) ? $post['event_latitude'] : '';
1206
+ $event_zoom = !empty($post['event_zoom']) ? $post['event_zoom'] : '';
1207
+ $event_phone = !empty($post['event_phone'])? $post['event_phone'] : '';
1208
}
1209
// Perform some validation on the submitted dates - this checks for valid years and months
1210
$date_format_one = '/^([0-9]{4})-([0][1-9])-([0-3][0-9])#x2F;';
my-calendar-group-manager.php CHANGED
@@ -513,7 +513,7 @@ function my_calendar_print_group_fields( $data,$mode,$event_id,$group_id='' ) {
513
</div>
514
<?php }
515
516
- function mc_check_group_data( $action,$_POST ) {
517
global $wpdb, $current_user, $users_entries;
518
$mcdb = $wpdb;
519
@@ -522,27 +522,27 @@ function mc_check_group_data( $action,$_POST ) {
522
$submit=array();
523
524
if ( get_magic_quotes_gpc() ) {
525
- $_POST = array_map( 'stripslashes_deep', $_POST );
526
}
527
528
- if (!wp_verify_nonce($_POST['event_nonce_name'],'event_nonce')) {
529
return;
530
}
531
532
$errors = "";
533
if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
534
- $title = !empty($_POST['event_title']) ? trim($_POST['event_title']) : '';
535
- $desc = !empty($_POST['content']) ? trim($_POST['content']) : '';
536
- $short = !empty($_POST['event_short']) ? trim($_POST['event_short']) : '';
537
- $repeats = !empty($_POST['event_repeats']) ? trim($_POST['event_repeats']) : 0;
538
- $host = !empty($_POST['event_host']) ? $_POST['event_host'] : $current_user->ID;
539
- $category = !empty($_POST['event_category']) ? $_POST['event_category'] : '';
540
- $linky = !empty($_POST['event_link']) ? trim($_POST['event_link']) : '';
541
- $expires = !empty($_POST['event_link_expires']) ? $_POST['event_link_expires'] : '0';
542
- $location_preset = !empty($_POST['location_preset']) ? $_POST['location_preset'] : '';
543
- $event_open = !empty($_POST['event_open']) ? $_POST['event_open'] : '2';
544
- $event_image = esc_url_raw( $_POST['event_image'] );
545
- $event_span = !empty($_POST['event_span']) ? 1 : 0;
546
// set location
547
if ($location_preset != 'none') {
548
$sql = "SELECT * FROM " . my_calendar_locations_table() . " WHERE location_id = $location_preset";
@@ -561,19 +561,19 @@ if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
561
$event_zoom = $location->location_zoom;
562
$event_phone = $location->location_phone;
563
} else {
564
- $event_label = !empty($_POST['event_label']) ? $_POST['event_label'] : '';
565
- $event_street = !empty($_POST['event_street']) ? $_POST['event_street'] : '';
566
- $event_street2 = !empty($_POST['event_street2']) ? $_POST['event_street2'] : '';
567
- $event_city = !empty($_POST['event_city']) ? $_POST['event_city'] : '';
568
- $event_state = !empty($_POST['event_state']) ? $_POST['event_state'] : '';
569
- $event_postcode = !empty($_POST['event_postcode']) ? $_POST['event_postcode'] : '';
570
- $event_region = !empty($_POST['event_region']) ? $_POST['event_region'] : '';
571
- $event_country = !empty($_POST['event_country']) ? $_POST['event_country'] : '';
572
- $event_url = !empty($_POST['event_url']) ? $_POST['event_url'] : '';
573
- $event_longitude = !empty($_POST['event_longitude']) ? $_POST['event_longitude'] : '';
574
- $event_latitude = !empty($_POST['event_latitude']) ? $_POST['event_latitude'] : '';
575
- $event_zoom = !empty($_POST['event_zoom']) ? $_POST['event_zoom'] : '';
576
- $event_phone = !empty($_POST['event_phone']) ? $_POST['event_phone'] : '';
577
}
578
579
// We check to make sure the URL is acceptable (blank or starting with http://)
513
</div>
514
<?php }
515
516
+ function mc_check_group_data( $action,$post ) {
517
global $wpdb, $current_user, $users_entries;
518
$mcdb = $wpdb;
519
522
$submit=array();
523
524
if ( get_magic_quotes_gpc() ) {
525
+ $post = array_map( 'stripslashes_deep', $post );
526
}
527
528
+ if (!wp_verify_nonce($post['event_nonce_name'],'event_nonce')) {
529
return;
530
}
531
532
$errors = "";
533
if ( $action == 'add' || $action == 'edit' || $action == 'copy' ) {
534
+ $title = !empty($post['event_title']) ? trim($post['event_title']) : '';
535
+ $desc = !empty($post['content']) ? trim($post['content']) : '';
536
+ $short = !empty($post['event_short']) ? trim($post['event_short']) : '';
537
+ $repeats = !empty($post['event_repeats']) ? trim($post['event_repeats']) : 0;
538
+ $host = !empty($post['event_host']) ? $post['event_host'] : $current_user->ID;
539
+ $category = !empty($post['event_category']) ? $post['event_category'] : '';
540
+ $linky = !empty($post['event_link']) ? trim($post['event_link']) : '';
541
+ $expires = !empty($post['event_link_expires']) ? $post['event_link_expires'] : '0';
542
+ $location_preset = !empty($post['location_preset']) ? $post['location_preset'] : '';
543
+ $event_open = !empty($post['event_open']) ? $post['event_open'] : '2';
544
+ $event_image = esc_url_raw( $post['event_image'] );
545
+ $event_span = !empty($post['event_span']) ? 1 : 0;
546
// set location
547
if ($location_preset != 'none') {
548
$sql = "SELECT * FROM " . my_calendar_locations_table() . " WHERE location_id = $location_preset";
561
$event_zoom = $location->location_zoom;
562
$event_phone = $location->location_phone;
563
} else {
564
+ $event_label = !empty($post['event_label']) ? $post['event_label'] : '';
565
+ $event_street = !empty($post['event_street']) ? $post['event_street'] : '';
566
+ $event_street2 = !empty($post['event_street2']) ? $post['event_street2'] : '';
567
+ $event_city = !empty($post['event_city']) ? $post['event_city'] : '';
568
+ $event_state = !empty($post['event_state']) ? $post['event_state'] : '';
569
+ $event_postcode = !empty($post['event_postcode']) ? $post['event_postcode'] : '';
570
+ $event_region = !empty($post['event_region']) ? $post['event_region'] : '';
571
+ $event_country = !empty($post['event_country']) ? $post['event_country'] : '';
572
+ $event_url = !empty($post['event_url']) ? $post['event_url'] : '';
573
+ $event_longitude = !empty($post['event_longitude']) ? $post['event_longitude'] : '';
574
+ $event_latitude = !empty($post['event_latitude']) ? $post['event_latitude'] : '';
575
+ $event_zoom = !empty($post['event_zoom']) ? $post['event_zoom'] : '';
576
+ $event_phone = !empty($post['event_phone']) ? $post['event_phone'] : '';
577
}
578
579
// We check to make sure the URL is acceptable (blank or starting with http://)
my-calendar-ical.php CHANGED
@@ -32,7 +32,7 @@ PRODID:-//Accessible Web Design//My Calendar//http://www.mywpcal.com//v'.$mc_ver
32
$event =& $events[$key];
33
if ( is_object($event) ) {
34
$array = event_as_array($event);
35
- $output .= jd_draw_template($array,$template,'ical');
36
}
37
}
38
}
32
$event =& $events[$key];
33
if ( is_object($event) ) {
34
$array = event_as_array($event);
35
+ $output .= "\n".jd_draw_template($array,$template,'ical');
36
}
37
}
38
}
my-calendar-output.php CHANGED
@@ -131,7 +131,7 @@ function my_calendar_draw_event($event, $type="calendar", $process_date, $templa
131
if ($event->category_icon != "") {
132
$path = (is_custom_icon())?$wp_plugin_url.'/my-calendar-custom/':plugins_url('icons',__FILE__).'/';
133
$hex = (strpos($event->category_color,'#') !== 0)?'#':'';
134
- $image = '<img src="'.$path.$event->category_icon.'" alt="" class="category-icon" style="background:'.$hex.$event->category_color.';" />';
135
} else {
136
$image = "";
137
}
@@ -458,7 +458,7 @@ echo '
458
459
// Actually do the printing of the calendar
460
function my_calendar($name,$format,$category,$showkey,$shownav,$showjump,$toggle,$time='month',$ltype='',$lvalue='',$id='jd-calendar',$template='',$content='') {
461
- global $wpdb, $wp_plugin_url;
462
$mcdb = $wpdb;
463
if ( get_option( 'mc_remote' ) == 'true' && function_exists('mc_remote_db') ) { $mcdb = mc_remote_db(); }
464
$my_calendar_body = '';
131
if ($event->category_icon != "") {
132
$path = (is_custom_icon())?$wp_plugin_url.'/my-calendar-custom/':plugins_url('icons',__FILE__).'/';
133
$hex = (strpos($event->category_color,'#') !== 0)?'#':'';
134
+ $image = '<img src="'.$path.$event->category_icon.'" alt="'.__('Category','my-calendar').': '.esc_attr($event->category_name).'" class="category-icon" style="background:'.$hex.$event->category_color.';" />';
135
} else {
136
$image = "";
137
}
458
459
// Actually do the printing of the calendar
460
function my_calendar($name,$format,$category,$showkey,$shownav,$showjump,$toggle,$time='month',$ltype='',$lvalue='',$id='jd-calendar',$template='',$content='') {
461
+ global $wpdb, $wp_plugin_url;
462
$mcdb = $wpdb;
463
if ( get_option( 'mc_remote' ) == 'true' && function_exists('mc_remote_db') ) { $mcdb = mc_remote_db(); }
464
$my_calendar_body = '';
my-calendar-styles.php CHANGED
@@ -170,7 +170,7 @@ my_calendar_check_db();
170
</p>
171
</fieldset>
172
</form>
173
-
174
<form method="post" action="<?php echo admin_url("admin.php?page=my-calendar-styles"); ?>">
175
<div><input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('my-calendar-nonce'); ?>" /></div>
176
<div><input type="hidden" value="true" name="mc_edit_style" />
@@ -186,10 +186,10 @@ my_calendar_check_db();
186
</div>";
187
}
188
?>
189
- <fieldset>
190
<legend><?php _e('CSS Style Options','my-calendar'); ?></legend>
191
<p>
192
- <label for="mc_show_css"><?php _e('Apply CSS only on these pages (comma separated page IDs)','my-calendar'); ?></label> <input type="text" id="mc_show_css" name="mc_show_css" value="<?php echo $mc_show_css; ?>" />
193
</p>
194
<p>
195
<input type="checkbox" id="reset_styles" name="reset_styles" <?php if (mc_is_custom_style(get_option('mc_css_file'))) { echo "disabled='disabled'"; } ?> /> <label for="reset_styles"><?php _e('Restore My Calendar stylesheet','my-calendar'); ?></label> <input type="checkbox" id="use_styles" name="use_styles" <?php jd_cal_checkCheckbox('mc_use_styles','true'); ?> /> <label for="use_styles"><?php _e('Disable My Calendar Stylesheet','my-calendar'); ?></label>
@@ -198,7 +198,7 @@ my_calendar_check_db();
198
<label for="style"><?php _e('Edit the stylesheet for My Calendar','my-calendar'); ?></label><br /><textarea class="style-editor" id="style" name="style" rows="30" cols="80"<?php if ( get_option('mc_use_styles') == 'true' ) { echo "disabled='disabled'"; } ?>><?php echo $my_calendar_style; ?></textarea>
199
</p>
200
<p>
201
- <input type="submit" name="save" class="button-primary" value="<?php _e('Save Changes','my-calendar'); ?>" />
202
</p>
203
</fieldset>
204
</form>
170
</p>
171
</fieldset>
172
</form>
173
+ <hr />
174
<form method="post" action="<?php echo admin_url("admin.php?page=my-calendar-styles"); ?>">
175
<div><input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('my-calendar-nonce'); ?>" /></div>
176
<div><input type="hidden" value="true" name="mc_edit_style" />
186
</div>";
187
}
188
?>
189
+ <fieldset style="position:relative;">
190
<legend><?php _e('CSS Style Options','my-calendar'); ?></legend>
191
<p>
192
+ <label for="mc_show_css"><?php _e('Apply CSS on these pages (comma separated IDs)','my-calendar'); ?></label> <input type="text" id="mc_show_css" name="mc_show_css" value="<?php echo $mc_show_css; ?>" />
193
</p>
194
<p>
195
<input type="checkbox" id="reset_styles" name="reset_styles" <?php if (mc_is_custom_style(get_option('mc_css_file'))) { echo "disabled='disabled'"; } ?> /> <label for="reset_styles"><?php _e('Restore My Calendar stylesheet','my-calendar'); ?></label> <input type="checkbox" id="use_styles" name="use_styles" <?php jd_cal_checkCheckbox('mc_use_styles','true'); ?> /> <label for="use_styles"><?php _e('Disable My Calendar Stylesheet','my-calendar'); ?></label>
198
<label for="style"><?php _e('Edit the stylesheet for My Calendar','my-calendar'); ?></label><br /><textarea class="style-editor" id="style" name="style" rows="30" cols="80"<?php if ( get_option('mc_use_styles') == 'true' ) { echo "disabled='disabled'"; } ?>><?php echo $my_calendar_style; ?></textarea>
199
</p>
200
<p>
201
+ <input type="submit" name="save" class="button-primary button-adjust" value="<?php _e('Save Changes','my-calendar'); ?>" />
202
</p>
203
</fieldset>
204
</form>
my-calendar-templates.php CHANGED
@@ -210,14 +210,14 @@ function event_as_array($event,$type='html') {
210
$details['shortdesc_raw'] = stripslashes($event->event_short);
211
$details['event_open'] = $event_open;
212
$details['icon'] = $category_icon;
213
- $details['icon_html'] = "<img src='$category_icon' class='mc-category-icon' alt='' />";
214
$details['color'] = $event->category_color;
215
$details['event_status'] = ( $event->event_approved == 1 )?__('Published','my-calendar'):__('Reserved','my-calendar');
216
$templates = get_option('mc_templates');
217
$details_template = ( !empty($templates['label']) )? stripcslashes($templates['label']):__('Details about','my-calendar').' {title}';
218
- $tags = array( "{title}","{location}","{color}","{icon}" );
219
- $replacements = array( $event->event_title, $event->event_label, $event->category_color, $event->category_icon );
220
- $details_label = str_replace($tags,$replacements,$details_template );
221
if ( $type == 'html' ) {
222
$details_link = mc_build_url( array('mc_id'=>"mc_".$dateid."_".$id), array('month','dy','yr','ltype','loc','mcat','format','feed','page_id','p'), get_option( 'mc_uri' ) );
223
} else {
210
$details['shortdesc_raw'] = stripslashes($event->event_short);
211
$details['event_open'] = $event_open;
212
$details['icon'] = $category_icon;
213
+ $details['icon_html'] = "<img src='$category_icon' class='mc-category-icon' alt='".__('Category','my-calendar').": ".esc_attr($event->category_name)."' />";
214
$details['color'] = $event->category_color;
215
$details['event_status'] = ( $event->event_approved == 1 )?__('Published','my-calendar'):__('Reserved','my-calendar');
216
$templates = get_option('mc_templates');
217
$details_template = ( !empty($templates['label']) )? stripcslashes($templates['label']):__('Details about','my-calendar').' {title}';
218
+ $tags = array( "{title}","{location}","{color}","{icon}","{date}","{time}" );
219
+ $replacements = array( stripslashes($event->event_title), stripslashes($event->event_label), $event->category_color, $event->category_icon, $details['date'], $details['time'] );
220
+ $details_label = str_replace($tags,$replacements,$details_template );
221
if ( $type == 'html' ) {
222
$details_link = mc_build_url( array('mc_id'=>"mc_".$dateid."_".$id), array('month','dy','yr','ltype','loc','mcat','format','feed','page_id','p'), get_option( 'mc_uri' ) );
223
} else {
my-calendar.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.joedolson.com/articles/my-calendar/
5
Description: Accessible WordPress event calendar plugin. Show events from multiple calendars on pages, in posts, or in widgets.
6
Author: Joseph C Dolson
7
Author URI: http://www.joedolson.com
8
- Version: 1.11.2
9
*/
10
/* Copyright 2009-2012 Joe Dolson (email : joe@joedolson.com)
11
@@ -24,7 +24,7 @@ Version: 1.11.2
24
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
*/
26
global $mc_version, $wpdb;
27
- $mc_version = '1.11.2';
28
29
// Define the tables used in My Calendar
30
if ( function_exists('is_multisite') && is_multisite() && get_site_option('mc_multisite_show') == 1 ) {
5
Description: Accessible WordPress event calendar plugin. Show events from multiple calendars on pages, in posts, or in widgets.
6
Author: Joseph C Dolson
7
Author URI: http://www.joedolson.com
8
+ Version: 1.11.3
9
*/
10
/* Copyright 2009-2012 Joe Dolson (email : joe@joedolson.com)
11
24
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
*/
26
global $mc_version, $wpdb;
27
+ $mc_version = '1.11.3';
28
29
// Define the tables used in My Calendar
30
if ( function_exists('is_multisite') && is_multisite() && get_site_option('mc_multisite_show') == 1 ) {
readme.txt CHANGED
@@ -4,7 +4,7 @@ Contributors: joedolson
4
Donate link: http://www.joedolson.com/donate.php
5
Tags: calendar, dates, times, events, scheduling, event manager
6
Requires at least: 2.9.2
7
- Tested up to: 3.4-beta4
8
Stable tag: trunk
9
10
Accessible WordPress event calendar plugin. Show events from multiple calendars on pages, in posts, or in widgets.
@@ -15,25 +15,37 @@ My Calendar provides event management and numerous methods to display your event
15
16
Basic Features:
17
18
* Standard calendar grid or list views of events
19
* Show events in monthly, weekly, or daily view.
20
- * Mini-calendar view for compact displays (as widget or as shortcode)
21
- * Widget to show today's events
22
- * Widget to show upcoming or past events
23
- * Template tags to control the HTML and information produced in most output areas.
24
- * Calendar can be limited to a single category, all categories, or a selection of categories
25
- * Calendar can be limited to events in specific locations
26
* Disable default CSS and default JavaScript or display only on specific Pages/Posts
27
* Editable CSS styles and JavaScript behaviors
28
- * Recurring events can be scheduled daily, weekly, on weekdays only, biweekly, monthly by date, monthly by day/week and annually.
29
- * Individual occurrences of recurring events can be modified individually
30
- * Events can be configured to be added by any level of user; directly to calendar or reserved for administrative approval
31
- * Store and display the following information for each event: title, description, alternate description, event category, URL, start date, start time, end date, end time, registration status (open, closed or irrelevant), event location.
32
* Email notification to administrator when events are scheduled or reserved
33
* Location Manager for storing frequently used venues
34
* Import method from Kieran O'Shea's Calendar plugin
35
- * Integrated Help file to guide in use of shortcodes and template tags
36
- * [User's Guide available for purchase](http://www.joedolson.com/articles/my-calendar/users-guide/) with extensive assistance in set up and use.
37
38
This calendar branched from [Kieran O'Shea's Calendar plugin](http://wordpress.org/extend/plugins/calendar/) in April 2010. You can import any previous scheduled events from Kieran's calendar into My Calendar.
39
@@ -53,7 +65,7 @@ Languages available:
53
* Italian ([Sabir Musta](http://mustaphasabir.altervista.org)) - to 1.7.0
54
* Brazilian Portuguese (Leonardo Kfoury) - to 1.6.0?
55
56
- New or updated translations are always appreciated. The translation source files are included in the download. [Codestyling Localization](http://wordpress.org/extend/plugins/codestyling-localization/) is a great plug-in for translating plug-ins!
57
58
== Installation ==
59
@@ -77,11 +89,20 @@ New or updated translations are always appreciated. The translation source files
77
78
== Changelog ==
79
80
= 1.11.2 =
81
82
* Bug fix: Called wp_editor on versions below 3.3
83
* Bug fix: assorted PHP notices cleaned up.
84
- *
85
86
= 1.11.1 =
87
@@ -818,5 +839,5 @@ I can! Just not in person. I've written a User's Guide for My Calendar, which yo
818
10. Template editing
819
820
== Upgrade Notice ==
821
-
822
- Version 1.11.0: Major revision to permissions. Significant template customization options added. Various other feature improvements.
4
Donate link: http://www.joedolson.com/donate.php
5
Tags: calendar, dates, times, events, scheduling, event manager
6
Requires at least: 2.9.2
7
+ Tested up to: 3.4.1
8
Stable tag: trunk
9
10
Accessible WordPress event calendar plugin. Show events from multiple calendars on pages, in posts, or in widgets.
15
16
Basic Features:
17
18
+ * [User's Guide available for purchase](http://www.joedolson.com/articles/my-calendar/users-guide/) for assistance in set up and use.
19
* Standard calendar grid or list views of events
20
* Show events in monthly, weekly, or daily view.
21
+ * Mini-calendar view for compact displays (widget or as shortcode)
22
+ * Widget with today's events
23
+ * Widget with upcoming or past events
24
+ * Custom templates for event layout
25
+ * Limit by category/categories
26
+ * Limit by location
27
* Disable default CSS and default JavaScript or display only on specific Pages/Posts
28
* Editable CSS styles and JavaScript behaviors
29
+ * Schedule a wide variety of recurring events.
30
+ * Individual occurrences of recurring events can be edited individually
31
+ * Access to most aspects of My Calendar can be restricted by role. (Adding events, editing events, editing styles, changing settings, etc.)
32
+ * Choose which of the following fields you want to enter and display for each event:
33
+ * title,
34
+ * description,
35
+ * event image,
36
+ * alternate description,
37
+ * event host,
38
+ * event category,
39
+ * URL,
40
+ * registration status (open, closed or irrelevant),
41
+ * event location
42
* Email notification to administrator when events are scheduled or reserved
43
* Location Manager for storing frequently used venues
44
+ * Fetch events from a remote MySQL database. (Sharing events in a network of sites.)
45
* Import method from Kieran O'Shea's Calendar plugin
46
+ * Integrated Help page to guide in use of shortcodes and template tags
47
+
48
+ The [User's Guide](http://www.joedolson.com/articles/my-calendar/users-guide/) provides 70 pages of troubleshooting, customization, and setup information.
49
50
This calendar branched from [Kieran O'Shea's Calendar plugin](http://wordpress.org/extend/plugins/calendar/) in April 2010. You can import any previous scheduled events from Kieran's calendar into My Calendar.
51
65
* Italian ([Sabir Musta](http://mustaphasabir.altervista.org)) - to 1.7.0
66
* Brazilian Portuguese (Leonardo Kfoury) - to 1.6.0?
67
68
+ New or updated translations are always appreciated. Visit <a href="http://translate.joedolson.com">my translations site</a> to start getting your language into shape!
69
70
== Installation ==
71
89
90
== Changelog ==
91
92
+ = 1.11.3 =
93
+
94
+ * Fatal error in PHP 5.4+ https://bugs.php.net/bug.php?id=54657
95
+ * Bug fix: {date} and {time} template tags not rendered in details link when run in a template.
96
+ * Bug fix: upgrade database button placement off-screen
97
+ * Bug fix: layout on stylesheet editor caused usability problems
98
+ * Bug fix: added line break in iCal output.
99
+ * Change: added alt attribute to category icons in appropriate contexts.
100
+ * [My Calendar 2.0 beta](http://downloads.wordpress.org/plugin/my-calendar.2.0.0.zip) added to subversion repository. Here there be bugs.
101
+
102
= 1.11.2 =
103
104
* Bug fix: Called wp_editor on versions below 3.3
105
* Bug fix: assorted PHP notices cleaned up.
106
107
= 1.11.1 =
108
839
10. Template editing
840
841
== Upgrade Notice ==
842
+ - Version 1.11.3: Minor bug fixes.
843
- Version 1.11.0: Major revision to permissions. Significant template customization options added. Various other feature improvements.