WordPress.org

Make WordPress Core

Ticket #6913: time_format_6913.diff

File time_format_6913.diff, 7.1 KB (added by regulatethis, 10 years ago)

Update of patch, fixing so 24 hour clock displays as default for an existing user without the option set (Thanks Alexander Beutl for pointing this out)

  • wp-admin/includes/post.php

     
    8181                } 
    8282        } 
    8383 
     84        // Let's handle the conversion to 24 hour time if the user has chosen 12 hour for posting 
     85        if( !empty( $_POST['time_format'] ) && $_POST['time_format'] == '12_hour' ) { 
     86                // If only the meridiem has been switched, we still need to update the time... 
     87                if( !empty( $_POST['hidden_meridiem'] ) && $_POST['hidden_meridiem'] != $_POST['meridiem'] ) 
     88                        $_POST['edit_date'] = '1'; 
     89                 
     90                // "Convert" hour back to 24-hour format if necessary, taking the meridiem into account... 
     91                if ( !empty( $_POST['time_format'] ) && $_POST['time_format'] == '12_hour' ) { 
     92                         
     93                        // If the user accidentally enters a 24-hour time then we implicitly fix it for him 
     94                        $_POST['hh'] = $_POST['hh'] <= 12 ? $_POST['hh'] : $_POST['hh'] - 12; 
     95                         
     96                        if ( $_POST['meridiem'] == 'pm' ) { 
     97                                $_POST['hh'] += 12; 
     98                        } 
     99                } 
     100        } 
     101                 
    84102        if (!empty ( $_POST['edit_date'] ) ) { 
    85103                $aa = $_POST['aa']; 
    86104                $mm = $_POST['mm']; 
  • wp-admin/includes/template.php

     
    844844 
    845845        $time_adj = time() + (get_option( 'gmt_offset' ) * 3600 ); 
    846846        $post_date = ($for_post) ? $post->post_date : $comment->comment_date; 
     847        $time_format = get_user_option('time_format'); 
     848        $hour_format = $time_format == '12_hour' ? 'g' : 'H'; 
    847849        $jj = ($edit) ? mysql2date( 'd', $post_date ) : gmdate( 'd', $time_adj ); 
    848850        $mm = ($edit) ? mysql2date( 'm', $post_date ) : gmdate( 'm', $time_adj ); 
    849851        $aa = ($edit) ? mysql2date( 'Y', $post_date ) : gmdate( 'Y', $time_adj ); 
    850         $hh = ($edit) ? mysql2date( 'H', $post_date ) : gmdate( 'H', $time_adj ); 
     852        $hh = ($edit) ? mysql2date( $hour_format, $post_date ) : gmdate( $hour_format, $time_adj ); 
    851853        $mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj ); 
    852854        $ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj ); 
    853  
     855         
     856        if( '12_hour' == $time_format ) { 
     857                $meridiem = ($edit) ? date( 'a', strtotime($post_date) ) : date( 'a' ); 
     858                $locale_meridiem = ($edit) ? $wp_locale->get_meridiem( date( 'A', strtotime($post_date) ) ) : $wp_locale->get_meridiem( date( 'A' ) ); 
     859                $locale_am = $wp_locale->get_meridiem( 'AM' ); 
     860                $locale_pm = $wp_locale->get_meridiem( 'PM' ); 
     861        } 
    854862        $month = "<select id=\"mm\" name=\"mm\"$tab_index_attribute>\n"; 
    855863        for ( $i = 1; $i < 13; $i = $i +1 ) { 
    856864                $month .= "\t\t\t" . '<option value="' . zeroise($i, 2) . '"'; 
     
    864872        $year = '<input type="text" id="aa" name="aa" value="' . $aa . '" size="4" maxlength="5"' . $tab_index_attribute . ' autocomplete="off"  />'; 
    865873        $hour = '<input type="text" id="hh" name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off"  />'; 
    866874        $minute = '<input type="text" id="mn" name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off"  />'; 
     875         
     876        if( '12_hour' == $time_format ) { 
     877                $am_selected = $meridiem == 'am' ? 'selected="selected"' : ''; 
     878                $pm_selected = $meridiem == 'pm' ? 'selected="selected"' : ''; 
     879                 
     880                $meridiem_drop_down = '<select name="meridiem" id="meridiem"' . $tab_index_attribute . '>' . PHP_EOL; 
     881                $meridiem_drop_down .= '        <option value="am" ' . $am_selected . '>' . $locale_am . '</option>' . PHP_EOL; 
     882                $meridiem_drop_down .= '        <option value="pm" ' . $pm_selected . '>' . $locale_pm . '</option>' . PHP_EOL; 
     883                $meridiem_drop_down .= '</selected>' . PHP_EOL; 
     884        } 
     885         
    867886        printf(_c('%1$s%2$s, %3$s <br />@ %4$s : %5$s|1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input'), $month, $day, $year, $hour, $minute); 
     887         
     888        if ( '12_hour' == $time_format ) 
     889                echo $meridiem_drop_down; 
     890         
    868891        echo "\n\n"; 
    869892        foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) 
    870893                echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . "\n"; 
     894 
     895        if( '12_hour' == $time_format ) 
     896                echo '<input type="hidden" id="hidden_meridiem" name="hidden_meridiem" value="' . $meridiem . '" />'; 
     897 
    871898?> 
    872899 
    873900<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" /> 
     901<input type="hidden" id="time_format" name="time_format" value="<?php echo $time_format; ?>" /> 
    874902<?php 
    875903} 
    876904 
  • wp-admin/includes/user.php

     
    8080        else 
    8181                $user->admin_color = 'fresh'; 
    8282 
     83        if ( !update ) 
     84                $user->time_format = '24_hour'; // Default to 24 hour time for new users. 
     85        else if ( isset( $_POST['time_format'] ) ) 
     86                $user->time_format = $_POST['time_format']; 
     87        else 
     88                $user->time_format = '24_hour'; 
     89                 
    8390        $errors = new WP_Error(); 
    8491 
    8592        /* checking that username has been typed */ 
  • wp-admin/user-edit.php

     
    161161        </tr> 
    162162<?php endif; ?> 
    163163<tr> 
     164<th scope="row"><?php _e('Editor Time Format')?></th> 
     165<td> 
     166        <?php  
     167                $current_time_format = get_user_option('time_format', $user_id); 
     168                if ( !empty($current_time_format) && $current_time_format != '24_hour' && $current_time_format != '12_hour' ) 
     169                        $current_time_format = '24_hour'; 
     170        ?> 
     171        <label for="time_format_12"><input name="time_format" id="time_format_12" type="radio" value="12_hour" <?php checked('12_hour', $current_time_format);?> />12-hour <i>2:35pm</i></label><br /> 
     172        <label for="time_format_24"><input name="time_format" id="time_format_24" type="radio" value="24_hour" <?php checked('24_hour', $current_time_format);?> />24-hour <i>14:35</i></label><br /> 
     173</td> 
     174</tr> 
     175<tr> 
    164176<th scope="row"><?php _e('Admin Color Scheme')?></th> 
    165177<td> 
    166178<?php 
  • wp-includes/registration.php

     
    9191 * 'jabber' - User's Jabber account. 
    9292 * 'aim' - User's AOL IM account. 
    9393 * 'yim' - User's Yahoo IM account. 
     94 * 'time_format' - A string used to set the user's chosen time format for the editor (12_hour or 24_hour) 
    9495 * 
    9596 * @since 2.0.0 
    9697 * @uses $wpdb WordPress database layer. 
     
    157158        if ( empty($admin_color) ) 
    158159                $admin_color = 'fresh'; 
    159160        $admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color); 
    160  
     161         
     162        if ( empty($time_format) ) { 
     163                $time_format = '24_hour'; 
     164        } else { 
     165                if ( $time_format != '12_hour' && $time_format != '24_hour' ) { 
     166                        $time_format = '24_hour'; 
     167                } 
     168        } 
     169         
    161170        if ( empty($user_registered) ) 
    162171                $user_registered = gmdate('Y-m-d H:i:s'); 
    163172 
     
    181190        update_usermeta( $user_id, 'yim', $yim ); 
    182191        update_usermeta( $user_id, 'rich_editing', $rich_editing); 
    183192        update_usermeta( $user_id, 'admin_color', $admin_color); 
     193        update_usermeta( $user_id, 'time_format', $time_format); 
    184194 
    185195        if ( $update && isset($role) ) { 
    186196                $user = new WP_User($user_id);