| 125 | <?php |
| 126 | // Site Language. |
| 127 | |
| 128 | /** |
| 129 | * Filter the list of available languages for front-end site signups. |
| 130 | * |
| 131 | * Passing an empty array to this hook will disable output of the setting on the |
| 132 | * signup form, and the default language will be used when creating the site. |
| 133 | * |
| 134 | * Languages not already installed will be stripped. |
| 135 | * |
| 136 | * @since 4.4.0 |
| 137 | * |
| 138 | * @param array $available_languages Available languages. |
| 139 | */ |
| 140 | $languages = (array) apply_filters( 'signup_available_languages', get_available_languages() ); |
| 141 | |
| 142 | /* |
| 143 | * Strip any non-installed languages. |
| 144 | * |
| 145 | * We re-call get_available_languages() here in case a language pack was installed |
| 146 | * in the 'signup_available_languages' callback before this point. |
| 147 | */ |
| 148 | $languages = array_intersect_assoc( $languages, get_available_languages() ); |
| 149 | |
| 150 | if ( ! empty( $languages ) ) : |
| 151 | ?> |
| 152 | <p> |
| 153 | <label for="site-language"><?php _e( 'Site Language:' ); ?></label> |
| 154 | <?php |
| 155 | // Network default. |
| 156 | $lang = get_site_option( 'WPLANG' ); |
| 157 | |
| 158 | if ( isset( $_POST['WPLANG'] ) ) { |
| 159 | $lang = $_POST['WPLANG']; |
| 160 | } |
| 161 | |
| 162 | // Use English if the default isn't available. |
| 163 | if ( ! in_array( $lang, $languages ) ) { |
| 164 | $lang = ''; |
| 165 | } |
| 166 | |
| 167 | wp_dropdown_languages( array( |
| 168 | 'name' => 'WPLANG', |
| 169 | 'id' => 'site-language', |
| 170 | 'selected' => $lang, |
| 171 | 'languages' => $languages, |
| 172 | 'show_available_translations' => false, |
| 173 | ) ); |
| 174 | ?> |
| 175 | </p> |
| 176 | <?php endif; // Languages. ?> |
| 177 | |
| 387 | // Handle the language setting for the new site. |
| 388 | if ( ! empty( $_POST['WPLANG'] ) ) { |
| 389 | |
| 390 | /** This filter is documented in wp-signup.php */ |
| 391 | $languages = (array) apply_filters( 'signup_available_languages', get_available_languages() ); |
| 392 | |
| 393 | /* |
| 394 | * Strip any non-installed languages. |
| 395 | * |
| 396 | * We re-call get_available_languages() here in case a language pack was installed |
| 397 | * in the 'signup_available_languages' callback before this point. |
| 398 | */ |
| 399 | $installed_languages = array_intersect_assoc( $languages, get_available_languages() ); |
| 400 | |
| 401 | if ( in_array( $_POST['WPLANG'], $installed_languages ) ) { |
| 402 | $language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) ); |
| 403 | |
| 404 | if ( $language ) { |
| 405 | $blog_meta_defaults['WPLANG'] = $language; |
| 406 | } |
| 407 | } |
| 408 | |
| 409 | } |
| 410 | |
| 713 | // Handle the language setting for the new site. |
| 714 | if ( ! empty( $_POST['WPLANG'] ) ) { |
| 715 | |
| 716 | /** This filter is documented in wp-signup.php */ |
| 717 | $languages = (array) apply_filters( 'signup_available_languages', get_available_languages() ); |
| 718 | |
| 719 | /* |
| 720 | * Strip any non-installed languages. |
| 721 | * |
| 722 | * We re-call get_available_languages() here in case a language pack was installed |
| 723 | * in the 'signup_available_languages' callback before this point. |
| 724 | */ |
| 725 | $installed_languages = array_intersect_assoc( $languages, get_available_languages() ); |
| 726 | |
| 727 | if ( in_array( $_POST['WPLANG'], $installed_languages ) ) { |
| 728 | $language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) ); |
| 729 | |
| 730 | if ( $language ) { |
| 731 | $signup_meta['WPLANG'] = $language; |
| 732 | } |
| 733 | } |
| 734 | |
| 735 | } |
| 736 | |