Changeset 5850 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-meeting-posttype/wporg-meeting-posttype.php
- Timestamp:
- 08/31/2017 12:34:12 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-meeting-posttype/wporg-meeting-posttype.php
r5849 r5850 30 30 } 31 31 32 public function meeting_column_width() { 33 echo '<style type="text/css">.column-team { width:10em !important; overflow:hidden }</style>'; 32 public function meeting_column_width() { ?> 33 <style type="text/css"> 34 .column-team { width: 10em !important; overflow: hidden; } 35 #meeting-info .recurring label { padding-right: 10px; } 36 </style> 37 <?php 34 38 } 35 39 … … 65 69 array( 66 70 'key'=>'recurring', 67 'value'=>array( 'weekly', 'biweekly', ' monthly', '1' ),71 'value'=>array( 'weekly', 'biweekly', 'occurrence', 'monthly', '1' ), 68 72 'compare'=>'NOT IN', 69 73 ), … … 80 84 array( 81 85 'key'=>'recurring', 82 'value'=>array( 'weekly', 'biweekly', ' monthly', '1' ),86 'value'=>array( 'weekly', 'biweekly', 'occurrence', 'monthly', '1' ), 83 87 'compare'=>'IN', 84 88 ), … … 115 119 // for each entry, set a fake meta value to show the next date for recurring meetings 116 120 array_walk( $posts, function ( &$post ) { 117 if ( $post->recurring == 'weekly' || $post->recurring === '1') {121 if ( 'weekly' === $post->recurring || '1' === $post->recurring ) { 118 122 try { 119 123 // from the start date, advance the week until it's past now 120 $start = new DateTime( $post->start_date.' '.$post->time.' GMT' ); 121 $next = $start; 122 $now = new DateTime(); 123 if ( $now > $next ) { 124 $interval = $start->diff($now); 124 $start = new DateTime( $post->start_date . ' ' . $post->time . ' GMT' ); 125 $next = $start; 126 $now = new DateTime(); 127 128 if ( $next < $now ) { 129 $interval = $start->diff( $now ); 125 130 // add one to days to account for events that happened earlier today 126 $weekdiff = ceil( ( $interval->days+1) / 7 );127 $next->modify( '+ '.$weekdiff.' weeks');131 $weekdiff = ceil( ( $interval->days + 1 ) / 7 ); 132 $next->modify( '+ ' . $weekdiff . ' weeks' ); 128 133 } 134 129 135 $post->next_date = $next->format( 'Y-m-d' ); 130 } catch ( Exception $e) {136 } catch ( Exception $e ) { 131 137 // if the datetime is invalid, then set the post->next_date to the start date instead 132 138 $post->next_date = $post->start_date; 133 139 } 134 } else if ( $post->recurring == 'biweekly') {140 } else if ( 'biweekly' === $post->recurring ) { 135 141 try { 136 142 // advance the start date 2 weeks at a time until it's past now 137 $start = new DateTime( $post->start_date.' '.$post->time.' GMT' ); 138 $next = $start; 139 $now = new DateTime(); 140 while ( $now > $next ) { 141 $next->modify('+2 weeks'); 143 $start = new DateTime( $post->start_date . ' ' . $post->time . ' GMT' ); 144 $next = $start; 145 $now = new DateTime(); 146 147 while ( $next < $now ) { 148 $next->modify( '+2 weeks' ); 142 149 } 143 $post->next_date = $next->format('Y-m-d'); 144 } catch (Exception $e) { 150 151 $post->next_date = $next->format( 'Y-m-d' ); 152 } catch ( Exception $e ) { 145 153 // if the datetime is invalid, then set the post->next_date to the start date instead 146 154 $post->next_date = $post->start_date; 147 155 } 148 } else if ( $post->recurring == 'monthly') {156 } else if ( 'occurrence' === $post->recurring ) { 149 157 try { 150 // advance the start date 1 month at a time until it's past now 151 $start = new DateTime( $post->start_date.' '.$post->time.' GMT' ); 152 $next = $start; 153 $now = new DateTime(); 154 while ( $now > $next ) { 155 $next->modify('+1 month'); 158 // advance the start date in the current month until it's past now 159 $start = new DateTime( $post->start_date . ' ' . $post->time . ' GMT' ); 160 $next = $start; 161 $now = new DateTime(); 162 163 $day_index = date( 'w', strtotime( $post->start_date . ' ' . $post->time . ' GMT' ) ); 164 $day_name = $GLOBALS['wp_locale']->get_weekday( $day_index ); 165 $numerals = array( 'first', 'second', 'third', 'fourth' ); 166 $months = array( 'this month', 'next month' ); 167 168 foreach ( $post->occurrence as $index ) { 169 foreach ( $months as $month ) { 170 $next->modify( $numerals[ $index - 1 ] . ' ' . $day_name . ' of ' . $month ); 171 if ( $next > $now ) { 172 break 2; 173 } 174 } 156 175 } 157 $post->next_date = $next->format('Y-m-d'); 158 } catch (Exception $e) { 176 177 $post->next_date = $next->format( 'Y-m-d' ); 178 } catch ( Exception $e ) { 159 179 // if the datetime is invalid, then set the post->next_date to the start date instead 160 180 $post->next_date = $post->start_date; 161 181 } 162 } 163 else { 182 } else if ( 'monthly' === $post->recurring ) { 183 try { 184 // advance the start date 1 month at a time until it's past now 185 $start = new DateTime( $post->start_date . ' ' . $post->time . ' GMT' ); 186 $next = $start; 187 $now = new DateTime(); 188 189 while ( $next < $now ) { 190 $next->modify( '+1 month' ); 191 } 192 193 $post->next_date = $next->format( 'Y-m-d' ); 194 } catch ( Exception $e ) { 195 // if the datetime is invalid, then set the post->next_date to the start date instead 196 $post->next_date = $post->start_date; 197 } 198 } else { 164 199 $post->next_date = $post->start_date; 165 200 } … … 228 263 public function add_meta_boxes() { 229 264 add_meta_box( 230 'meeting _info',265 'meeting-info', 231 266 'Meeting Info', 232 267 array( $this, 'render_meta_boxes' ), … … 241 276 wp_enqueue_style( 'jquery-ui-style', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css', true); 242 277 243 $meta = get_post_custom( $post->ID );244 $team = ! isset( $meta['team'][0] ) ? '' : $meta['team'][0];245 $start = ! isset( $meta['start_date'][0] ) ? '' : $meta['start_date'][0];246 $end = ! isset( $meta['end_date'][0] ) ? '' : $meta['end_date'][0];247 $time = ! isset( $meta['time'][0] ) ? '' : $meta['time'][0];248 $recurring = ! isset( $meta['recurring'][0] ) ? '' : $meta['recurring'][0];249 if ( $recurring === '1') {278 $meta = get_post_custom( $post->ID ); 279 $team = isset( $meta['team'][0] ) ? $meta['team'][0] : ''; 280 $start = isset( $meta['start_date'][0] ) ? $meta['start_date'][0] : ''; 281 $end = isset( $meta['end_date'][0] ) ? $meta['end_date'][0] : ''; 282 $time = isset( $meta['time'][0] ) ? $meta['time'][0] : ''; 283 $recurring = isset( $meta['recurring'][0] ) ? $meta['recurring'][0] : ''; 284 if ( '1' === $recurring ) { 250 285 $recurring = 'weekly'; 251 286 } 252 $link = ! isset( $meta['link'][0] ) ? '' : $meta['link'][0]; 253 $location = ! isset( $meta['location'][0] ) ? '' : $meta['location'][0]; 287 $occurrence = isset( $meta['occurrence'][0] ) ? unserialize( $meta['occurrence'][0] ) : array(); 288 $link = isset( $meta['link'][0] ) ? $meta['link'][0] : ''; 289 $location = isset( $meta['location'][0] ) ? $meta['location'][0] : ''; 254 290 wp_nonce_field( 'save_meeting_meta_'.$post->ID , 'meeting_nonce' ); 255 291 ?> 256 292 257 293 <p> 258 <label for="team"><?php _e( 'Team: ', 'wporg' ); ?> 259 <input type="text" id="team" name="team" class="regular-text wide" value="<?php echo esc_attr($team); ?>"> 294 <label for="team"> 295 <?php _e( 'Team: ', 'wporg' ); ?> 296 <input type="text" id="team" name="team" class="regular-text wide" value="<?php echo esc_attr( $team ); ?>"> 260 297 </label> 261 298 </p> 262 299 <p> 263 <label for="start_date"><?php _e( 'Start Date', 'wporg' ); ?> 264 <input type="text" name="start_date" class="date" value="<?php echo esc_attr($start); ?>"> 265 </label> 266 <label for="end_date"><?php _e( 'End Date', 'wporg' ); ?> 267 <input type="text" name="end_date" class="date" value="<?php echo esc_attr($end); ?>"> 300 <label for="start_date"> 301 <?php _e( 'Start Date', 'wporg' ); ?> 302 <input type="text" name="start_date" id="start_date" class="date" value="<?php echo esc_attr( $start ); ?>"> 303 </label> 304 <label for="end_date"> 305 <?php _e( 'End Date', 'wporg' ); ?> 306 <input type="text" name="end_date" id="end_date" class="date" value="<?php echo esc_attr( $end ); ?>"> 268 307 </label> 269 308 </p> 270 309 <p> 271 <label for="time"><?php _e( 'Time (UTC)', 'wporg' ); ?> 272 <input type="text" name="time" class="time" value="<?php echo esc_attr($time); ?>"> 273 </label> 274 <label for="recurring"><?php _e( 'Recurring: ', 'wporg' ); ?> 310 <label for="time"> 311 <?php _e( 'Time (UTC)', 'wporg' ); ?> 312 <input type="text" name="time" id="time" class="time" value="<?php echo esc_attr( $time ); ?>"> 313 </label> 314 </p> 315 <p class="recurring"> 316 <?php _e( 'Recurring: ', 'wporg' ); ?><br /> 317 <label for="weekly"> 275 318 <input type="radio" name="recurring" value="weekly" id="weekly" class="regular-radio" <?php checked( $recurring, 'weekly' ); ?>> 276 <label for="weekly"><?php _e( 'Weekly', 'wporg' ); ?></label> 319 <?php _e( 'Weekly', 'wporg' ); ?> 320 </label><br /> 321 322 <label for="biweekly"> 277 323 <input type="radio" name="recurring" value="biweekly" id="biweekly" class="regular-radio" <?php checked( $recurring, 'biweekly' ); ?>> 278 <label for="biweekly"><?php _e( 'Biweekly', 'wporg' ); ?></label> 324 <?php _e( 'Biweekly', 'wporg' ); ?> 325 </label><br /> 326 327 <label for="occurrence"> 328 <input type="radio" name="recurring" value="occurrence" id="occurrence" class="regular-radio" <?php checked( $recurring, 'occurrence' ); ?>> 329 <?php _e( 'Occurrence in a month:', 'wporg' ); ?> 330 </label> 331 <label for="week-1"> 332 <input type="checkbox" name="occurrence[]" value="1" id="week-1" <?php checked( in_array( 1, $occurrence ) ); ?>> 333 <?php _e( '1st', 'wporg' ); ?> 334 </label> 335 <label for="week-2"> 336 <input type="checkbox" name="occurrence[]" value="2" id="week-2" <?php checked( in_array( 2, $occurrence ) ); ?>> 337 <?php _e( '2nd', 'wporg' ); ?> 338 </label> 339 <label for="week-3"> 340 <input type="checkbox" name="occurrence[]" value="3" id="week-3" <?php checked( in_array( 3, $occurrence ) ); ?>> 341 <?php _e( '3rd', 'wporg' ); ?> 342 </label> 343 <label for="week-4"> 344 <input type="checkbox" name="occurrence[]" value="4" id="week-4" <?php checked( in_array( 4, $occurrence ) ); ?>> 345 <?php _e( '4th', 'wporg' ); ?> 346 </label><br /> 347 348 <label for="monthly"> 279 349 <input type="radio" name="recurring" value="monthly" id="monthly" class="regular-radio" <?php checked( $recurring, 'monthly' ); ?>> 280 < label for="monthly"><?php _e( 'Monthly', 'wporg' ); ?></label>350 <?php _e( 'Monthly', 'wporg' ); ?> 281 351 </label> 282 352 </p> 283 353 <p> 284 354 <label for="link"><?php _e( 'Link: ', 'wporg' ); ?> 285 <input type="text" name="link" class="regular-text wide" value="<?php echo esc_url($link); ?>">355 <input type="text" name="link" id="link" class="regular-text wide" value="<?php echo esc_url( $link ); ?>"> 286 356 </label> 287 357 </p> 288 358 <p> 289 359 <label for="location"><?php _e( 'Location: ', 'wporg' ); ?> 290 <input type="text" id="location" name="location" class="regular-text wide" value="<?php echo esc_attr($location); ?>">360 <input type="text" name="location" id="location" class="regular-text wide" value="<?php echo esc_attr( $location ); ?>"> 291 361 </label> 292 362 </p> 293 363 <script> 294 jQuery(document).ready( function($){364 jQuery(document).ready( function($) { 295 365 $('.date').datepicker({ 296 dateFormat: "yy-mm-dd"366 dateFormat: 'yy-mm-dd' 297 367 }); 298 $(document).on( 'keydown', '#title, #location', function( e ) { 299 var keyCode = e.keyCode || e.which; 300 if ( 9 == keyCode){ 301 e.preventDefault(); 302 var target = $(this).attr('id') == 'title' ? '#team' : 'textarea#content'; 303 if ( (target === '#team') || $('#wp-content-wrap').hasClass('html-active') ) { 304 $(target).focus(); 305 } else { 306 tinymce.execCommand('mceFocus',false,'content'); 307 } 308 } 368 369 $('input[name="recurring"]').change( function() { 370 var disabled = ( 'occurrence' !== $(this).val() ); 371 $('#meeting-info').find('[name^="occurrence"]').prop('disabled', disabled); 309 372 }); 373 374 if ( 'occurrence' !== $('input[name="recurring"]:checked').val() ) { 375 $('#meeting-info').find('[name^="occurrence"]').prop('disabled', true); 376 } 310 377 }); 311 378 </script> … … 328 395 329 396 // Don't save for revisions 330 if ( isset( $post->post_type ) && $post->post_type == 'revision') {397 if ( isset( $post->post_type ) && 'revision' === $post->post_type ) { 331 398 return $post_id; 332 399 } … … 337 404 } 338 405 339 $team = ! isset( $meta['team'][0] ) ? '' : $meta['team'][0]; 340 $start = ! isset( $meta['start_date'][0] ) ? '' : $meta['start_date'][0]; 341 $end = ! isset( $meta['end_date'][0] ) ? '' : $meta['end_date'][0]; 342 $recurring = ! isset( $meta['recurring'][0] ) ? '' : $meta['recurring'][0]; 343 $link = ! isset( $meta['link'][0] ) ? '' : $meta['link'][0]; 344 $location = ! isset( $meta['location'][0] ) ? '' : $meta['location'][0]; 345 346 $meta['team'] = ( isset( $_POST['team'] ) ? esc_textarea( $_POST['team'] ) : '' ); 347 $meta['start_date'] = ( isset( $_POST['start_date'] ) ? esc_textarea( $_POST['start_date'] ) : '' ); 348 $meta['end_date'] = ( isset( $_POST['end_date'] ) ? esc_textarea( $_POST['end_date'] ) : '' ); 349 $meta['time'] = ( isset( $_POST['time'] ) ? esc_textarea( $_POST['time'] ) : '' ); 350 $meta['recurring'] = ( isset ( $_POST['recurring'] ) && ( in_array( $_POST['recurring'], array( 'weekly', 'biweekly', 'monthly' ) ) ) ? ( $_POST['recurring'] ) : '' ); 351 $meta['link'] = ( isset( $_POST['link'] ) ? esc_url( $_POST['link'] ) : '' ); 352 $meta['location'] = ( isset( $_POST['location'] ) ? esc_textarea( $_POST['location'] ) : '' ); 406 $meta['team'] = ( isset( $_POST['team'] ) ? esc_textarea( $_POST['team'] ) : '' ); 407 $meta['start_date'] = ( isset( $_POST['start_date'] ) ? esc_textarea( $_POST['start_date'] ) : '' ); 408 $meta['end_date'] = ( isset( $_POST['end_date'] ) ? esc_textarea( $_POST['end_date'] ) : '' ); 409 $meta['time'] = ( isset( $_POST['time'] ) ? esc_textarea( $_POST['time'] ) : '' ); 410 $meta['recurring'] = ( isset( $_POST['recurring'] ) 411 && in_array( $_POST['recurring'], array( 'weekly', 'biweekly', 'occurrence', 'monthly' ) ) 412 ? ( $_POST['recurring'] ) : '' ); 413 $meta['occurrence'] = ( isset( $_POST['occurrence'] ) && 'occurrence' === $meta['recurring'] 414 && is_array( $_POST['occurrence'] ) 415 ? array_map( 'intval', $_POST['occurrence'] ) : array() ); 416 $meta['link'] = ( isset( $_POST['link'] ) ? esc_url( $_POST['link'] ) : '' ); 417 $meta['location'] = ( isset( $_POST['location'] ) ? esc_textarea( $_POST['location'] ) : '' ); 353 418 354 419 foreach ( $meta as $key => $value ) {
Note: See TracChangeset
for help on using the changeset viewer.