Changeset 29630 for trunk/src/wp-admin/includes/upgrade.php
- Timestamp:
- 08/26/2014 07:58:33 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/upgrade.php
r29372 r29630 437 437 if ( $wp_current_db_version < 26691 ) 438 438 upgrade_380(); 439 440 if ( $wp_current_db_version < 29630 ) 441 upgrade_400(); 439 442 440 443 maybe_disable_link_manager(); … … 1305 1308 } 1306 1309 } 1310 1311 /** 1312 * Execute changes made in WordPress 4.0.0. 1313 * 1314 * @since 4.0.0 1315 */ 1316 function upgrade_400() { 1317 global $wp_current_db_version; 1318 if ( $wp_current_db_version < 29630 ) { 1319 if ( ! is_multisite() && false === get_option( 'WPLANG' ) ) { 1320 if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && in_array( WPLANG, get_available_languages() ) ) { 1321 update_option( 'WPLANG', WPLANG ); 1322 } else { 1323 update_option( 'WPLANG', '' ); 1324 } 1325 } 1326 } 1327 } 1328 1307 1329 /** 1308 1330 * Execute network level changes … … 1420 1442 function maybe_create_table($table_name, $create_ddl) { 1421 1443 global $wpdb; 1422 1444 1423 1445 $query = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $table_name ) ); 1424 1446 … … 2193 2215 } 2194 2216 endif; 2195 2196 /**2197 * Output the input fields for the language selection form on the installation screen.2198 *2199 * @since 4.0.02200 *2201 * @see wp_get_available_translations_from_api()2202 *2203 * @param array $languages Array of available languages (populated via the Translations API).2204 */2205 function wp_install_language_form( $languages ) {2206 $installed_languages = get_available_languages();2207 2208 echo "<label class='screen-reader-text' for='language'>Select a default language</label>\n";2209 echo "<select size='14' name='language' id='language'>\n";2210 echo '<option value="" lang="en" selected="selected" data-continue="Continue" data-installed="1">English (United States)</option>';2211 echo "\n";2212 2213 if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && ( 'en_US' !== WPLANG ) ) {2214 if ( isset( $languages[ WPLANG ] ) ) {2215 $language = $languages[ WPLANG ];2216 echo '<option value="' . esc_attr( $language['language'] ) . '" lang="' . esc_attr( $language['iso'][1] ) . '">' . esc_html( $language['native_name'] ) . "</option>\n";2217 }2218 }2219 2220 foreach ( $languages as $language ) {2221 printf( '<option value="%s" lang="%s" data-continue="%s"%s>%s</option>' . "\n",2222 esc_attr( $language['language'] ),2223 esc_attr( $language['iso'][1] ),2224 esc_attr( $language['strings']['continue'] ),2225 in_array( $language['language'], $installed_languages ) ? ' data-installed="1"' : '',2226 esc_html( $language['native_name'] ) );2227 }2228 echo "</select>\n";2229 echo '<p class="step"><span class="spinner"></span><input id="language-continue" type="submit" class="button button-primary button-large" value="Continue" /></p>';2230 }2231 2232 /**2233 * Get available translations from the WordPress.org API.2234 *2235 * @since 4.0.02236 *2237 * @see wp_remote_post()2238 *2239 * @return array Array of translations, each an array of data.2240 */2241 function wp_get_available_translations_from_api() {2242 $url = 'http://api.wordpress.org/translations/core/1.0/';2243 if ( wp_http_supports( array( 'ssl' ) ) ) {2244 $url = set_url_scheme( $url, 'https' );2245 }2246 2247 $options = array(2248 'timeout' => 3,2249 'body' => array( 'version' => $GLOBALS['wp_version'] ),2250 );2251 2252 $response = wp_remote_post( $url, $options );2253 $body = wp_remote_retrieve_body( $response );2254 if ( $body && $body = json_decode( $body, true ) ) {2255 $translations = array();2256 // Key the array with the language code for now2257 foreach ( $body['translations'] as $translation ) {2258 $translations[ $translation['language'] ] = $translation;2259 }2260 return $translations;2261 }2262 return false;2263 }2264 2265 /**2266 * Download a language pack.2267 *2268 * @since 4.0.02269 *2270 * @see wp_get_available_translations_from_api()2271 *2272 * @param string $download Language code to download.2273 * @return string|bool Returns the language code if successfully downloaded2274 * (or already installed), or false on failure.2275 */2276 function wp_install_download_language_pack( $download ) {2277 // Check if the translation is already installed.2278 if ( in_array( $download, get_available_languages() ) ) {2279 return $download;2280 }2281 2282 // Confirm the translation is one we can download.2283 $translations = wp_get_available_translations_from_api();2284 if ( ! $translations ) {2285 return false;2286 }2287 foreach ( $translations as $translation ) {2288 if ( $translation['language'] === $download ) {2289 $translation_to_load = true;2290 break;2291 }2292 }2293 2294 if ( empty( $translation_to_load ) ) {2295 return false;2296 }2297 $translation = (object) $translation;2298 2299 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';2300 $skin = new Automatic_Upgrader_Skin;2301 $upgrader = new Language_Pack_Upgrader( $skin );2302 $translation->type = 'core';2303 /**2304 * @todo failures (such as non-direct FS)2305 */2306 $upgrader->upgrade( $translation, array( 'clear_update_cache' => false ) );2307 return $translation->language;2308 }2309 2310 /**2311 * Load a translation during the install process.2312 *2313 * @since 4.0.02314 *2315 * @see load_textdomain()2316 *2317 * @param string $translation Translation to load.2318 * @return string|bool Returns the language code if successfully loaded,2319 * or false on failure.2320 */2321 function wp_install_load_language( $translation ) {2322 if ( ! empty( $translation ) ) {2323 if ( in_array( $translation, get_available_languages() ) ) {2324 $translation_to_load = $translation;2325 }2326 }2327 2328 if ( empty( $translation_to_load ) ) {2329 return false;2330 }2331 2332 unload_textdomain( 'default' ); // Start over.2333 load_textdomain( 'default', WP_LANG_DIR . "/{$translation_to_load}.mo" );2334 load_textdomain( 'default', WP_LANG_DIR . "/admin-{$translation_to_load}.mo" );2335 return $translation_to_load;2336 }
Note: See TracChangeset
for help on using the changeset viewer.