WordPress.org

Make WordPress Core

Changeset 12507


Ignore:
Timestamp:
12/23/09 14:16:36 (4 years ago)
Author:
ryan
Message:

Do not use deprecated Etc timezones. Props miqrogroove. fixes #11558 for trunk

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/options-general.php

    r11761 r12507  
    140140$current_offset = get_option('gmt_offset'); 
    141141$tzstring = get_option('timezone_string'); 
    142 if (empty($tzstring)) { // set the Etc zone if no timezone string exists 
    143     if ($current_offset < 0) $offnum = - ceil($current_offset); 
    144     else $offnum = - floor($current_offset); 
    145     $tzstring = 'Etc/GMT' . (($offnum >= 0) ? '+' : '') . $offnum; 
     142 
     143$check_zone_info = true; 
     144 
     145// Remove old Etc mappings.  Fallback to gmt_offset. 
     146if ( false !== strpos($tzstring,'Etc/GMT') ) 
     147    $tzstring = ''; 
     148 
     149if (empty($tzstring)) { // Create a UTC+- zone if no timezone string exists 
     150    $check_zone_info = false; 
     151    if ( 0 == $current_offset ) 
     152        $tzstring = 'UTC+0'; 
     153    elseif ($current_offset < 0) 
     154        $tzstring = 'UTC' . $current_offset; 
     155    else 
     156        $tzstring = 'UTC+' . $current_offset; 
    146157} 
     158 
    147159?> 
    148160<th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th> 
     
    161173<br /> 
    162174<span> 
    163 <?php if ($tzstring) : ?> 
     175<?php if ($check_zone_info && $tzstring) : ?> 
    164176    <?php 
    165177    $now = localtime(time(),true); 
  • trunk/wp-admin/options.php

    r12411 r12507  
    6666        if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) ) 
    6767            $_POST['time_format'] = $_POST['time_format_custom']; 
     68        // Map UTC+- timezones to gmt_offsets and set timezone_string to empty. 
     69        if ( !empty($_POST['timezone_string']) && preg_match('/^UTC[+-]/', $_POST['timezone_string']) ) { 
     70            $_POST['gmt_offset'] = $_POST['timezone_string']; 
     71            $_POST['gmt_offset'] = preg_replace('/UTC\+?/', '', $_POST['gmt_offset']); 
     72            $_POST['timezone_string'] = ''; 
     73        } 
    6874    } 
    6975 
  • trunk/wp-includes/functions.php

    r12486 r12507  
    33943394    static $mo_loaded = false; 
    33953395 
    3396     $continents = array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific', 'Etc' ); 
     3396    $continents = array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific'); 
    33973397 
    33983398    // Load translations for continents and cities 
     
    34083408        $zone = explode( '/', $zone ); 
    34093409        if ( !in_array( $zone[0], $continents ) ) { 
    3410             continue; 
    3411         } 
    3412         if ( 'Etc' === $zone[0] && in_array( $zone[1], array( 'UCT', 'GMT', 'GMT0', 'GMT+0', 'GMT-0', 'Greenwich', 'Universal', 'Zulu' ) ) ) { 
    34133410            continue; 
    34143411        } 
     
    34533450            // Continent optgroup 
    34543451            if ( !isset( $zonen[$key - 1] ) || $zonen[$key - 1]['continent'] !== $zone['continent'] ) { 
    3455                 $label = ( 'Etc' === $zone['continent'] ) ? __( 'Manual offsets' ) : $zone['t_continent']; 
     3452                $label = $zone['t_continent']; 
    34563453                $structure[] = '<optgroup label="'. esc_attr( $label ) .'">'; 
    34573454            } 
     
    34593456            // Add the city to the value 
    34603457            $value[] = $zone['city']; 
    3461             if ( 'Etc' === $zone['continent'] ) { 
    3462                 if ( 'UTC' === $zone['city'] ) { 
    3463                     $display = ''; 
    3464                 } else { 
    3465                     $display = str_replace( 'GMT', '', $zone['city'] ); 
    3466                     $display = strtr( $display, '+-', '-+' ) . ':00'; 
    3467                 } 
    3468                 $display = sprintf( __( 'UTC %s' ), $display ); 
    3469             } else { 
    3470                 $display = $zone['t_city']; 
    3471                 if ( !empty( $zone['subcity'] ) ) { 
    3472                     // Add the subcity to the value 
    3473                     $value[] = $zone['subcity']; 
    3474                     $display .= ' - ' . $zone['t_subcity']; 
    3475                 } 
     3458 
     3459            $display = $zone['t_city']; 
     3460            if ( !empty( $zone['subcity'] ) ) { 
     3461                // Add the subcity to the value 
     3462                $value[] = $zone['subcity']; 
     3463                $display .= ' - ' . $zone['t_subcity']; 
    34763464            } 
    34773465        } 
     
    34913479    } 
    34923480 
     3481    // Do UTC 
     3482    $structure[] = '<optgroup label="'. esc_attr__( 'UTC' ) .'">'; 
     3483    $selected = ''; 
     3484    if ( 'UTC' === $selected_zone ) 
     3485        $selected = 'selected="selected" '; 
     3486    $structure[] = '<option ' . $selected . 'value="' . esc_attr( 'UTC' ) . '">' . __('UTC') . '</option>'; 
     3487    $structure[] = '</optgroup>'; 
     3488 
     3489    // Do manual UTC offsets 
     3490    $structure[] = '<optgroup label="'. esc_attr__( 'Manual Offsets' ) .'">'; 
     3491    $offset_range = array (-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 
     3492        0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14); 
     3493    foreach ( $offset_range as $offset ) { 
     3494        if ( 0 <= $offset ) 
     3495            $offset_name = '+' . $offset; 
     3496        else 
     3497            $offset_name = (string) $offset; 
     3498 
     3499        $offset_value = $offset_name; 
     3500        $offset_name = str_replace(array('.25','.5','.75'), array(':15',':30',':45'), $offset_name); 
     3501        $offset_name = 'UTC' . $offset_name; 
     3502        $offset_value = 'UTC' . $offset_value; 
     3503        $selected = ''; 
     3504        if ( $offset_value === $selected_zone ) 
     3505            $selected = 'selected="selected" '; 
     3506        $structure[] = '<option ' . $selected . 'value="' . esc_attr( $offset_value ) . '">' . esc_html( $offset_name ) . "</option>"; 
     3507         
     3508    } 
     3509    $structure[] = '</optgroup>'; 
     3510 
    34933511    return join( "\n", $structure ); 
    34943512} 
Note: See TracChangeset for help on using the changeset viewer.