Ticket #43869: 43869.diff
| File 43869.diff, 2.2 KB (added by , 8 years ago) |
|---|
-
src/wp-includes/l10n.php
87 87 * @return string The locale of the user. 88 88 */ 89 89 function get_user_locale( $user_id = 0 ) { 90 $user = false; 91 if ( 0 === $user_id && function_exists( 'wp_get_current_user' ) ) { 92 $user = wp_get_current_user(); 93 } elseif ( $user_id instanceof WP_User ) { 94 $user = $user_id; 95 } elseif ( $user_id && is_numeric( $user_id ) ) { 96 $user = get_user_by( 'id', $user_id ); 90 global $current_user; 91 92 if ( empty( $user_id ) ) { 93 // Do not initialize the current user if it's not already set through the bootstrap process. 94 if ( isset( $current_user ) || did_action( 'set_current_user' ) || doing_action( 'init' ) || did_action( 'init' ) ) { 95 $user_id = get_current_user_id(); 96 } else { 97 98 /** This filter is documented in wp-includes/user.php */ 99 $user_id = apply_filters( 'determine_current_user', false ); 100 } 101 } 102 103 if ( $user_id instanceof WP_User ) { 104 $user_id = $user_id->ID; 97 105 } 98 106 99 if ( ! $user ) {107 if ( ! $user_id ) { 100 108 return get_locale(); 101 109 } 102 110 103 $locale = $user->locale;111 $locale = get_user_meta( $user_id, 'locale', true ); 104 112 return $locale ? $locale : get_locale(); 105 113 } 106 114 -
tests/phpunit/tests/l10n/getUserLocale.php
136 136 $user_locale = get_user_locale( 'string' ); 137 137 $this->assertSame( get_locale(), $user_locale ); 138 138 } 139 140 /** 141 * @ticket 43869 142 */ 143 public function test_get_user_locale_does_not_initialize_current_user_early() { 144 global $wp_actions; 145 146 unset( $wp_actions['set_current_user'], $wp_actions['init'], $GLOBALS['current_user'] ); 147 remove_all_filters( 'determine_current_user' ); 148 add_filter( 'determine_current_user', array( $this, 'get_test_user_id' ) ); 149 150 $user_locale = get_user_locale(); 151 152 $this->assertNull( $GLOBALS['current_user'] ); 153 $this->assertSame( 'de_DE', $user_locale ); 154 } 155 156 public function get_test_user_id() { 157 return $this->user_id; 158 } 139 159 }