Make WordPress Core

Changeset 12507


Ignore:
Timestamp:
12/23/2009 02:16:36 PM (15 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.