WordPress.org

Make WordPress Core

Ticket #42697: 42697.diff

File 42697.diff, 4.0 KB (added by flixos90, 2 years ago)
  • src/wp-admin/network/settings.php

     
    109109        );
    110110
    111111        // Handle translation installation.
    112         if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) {
     112        if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
    113113                $language = wp_download_language_pack( $_POST['WPLANG'] );
    114114                if ( $language ) {
    115115                        $_POST['WPLANG'] = $language;
     
    419419                                                                'selected'     => $lang,
    420420                                                                'languages'    => $languages,
    421421                                                                'translations' => $translations,
    422                                                                 'show_available_translations' => current_user_can( 'install_languages' ),
     422                                                                'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
    423423                                                        )
    424424                                                );
    425425                                                ?>
  • src/wp-admin/network/site-new.php

     
    7373                        $meta['WPLANG'] = ''; // en_US
    7474                } elseif ( in_array( $_POST['WPLANG'], get_available_languages() ) ) {
    7575                        $meta['WPLANG'] = $_POST['WPLANG'];
    76                 } elseif ( current_user_can( 'install_languages' ) ) {
     76                } elseif ( current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
    7777                        $language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
    7878                        if ( $language ) {
    7979                                $meta['WPLANG'] = $language;
     
    259259                                                        'selected'                    => $lang,
    260260                                                        'languages'                   => $languages,
    261261                                                        'translations'                => $translations,
    262                                                         'show_available_translations' => current_user_can( 'install_languages' ),
     262                                                        'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
    263263                                                )
    264264                                        );
    265265                                        ?>
  • src/wp-admin/options-general.php

     
    177177                                        'selected'                    => $locale,
    178178                                        'languages'                   => $languages,
    179179                                        'translations'                => $translations,
    180                                         'show_available_translations' => current_user_can( 'install_languages' ),
     180                                        'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
    181181                                )
    182182                        );
    183183
  • src/wp-admin/options.php

     
    187187                if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) {
    188188                        require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    189189
    190                         $language = wp_download_language_pack( $_POST['WPLANG'] );
    191                         if ( $language ) {
    192                                 $_POST['WPLANG'] = $language;
     190                        if ( wp_can_install_language_pack() ) {
     191                                $language = wp_download_language_pack( $_POST['WPLANG'] );
     192                                if ( $language ) {
     193                                        $_POST['WPLANG'] = $language;
     194                                }
    193195                        }
    194196                }
    195197        }
  • src/wp-includes/capabilities.php

     
    439439                        break;
    440440                case 'install_languages':
    441441                case 'update_languages':
    442                         if ( ! function_exists( 'request_filesystem_credentials' ) ) {
    443                                 require_once( ABSPATH . 'wp-admin/includes/file.php' );
    444                         }
    445 
    446                         if ( ! function_exists( 'wp_can_install_language_pack' ) ) {
    447                                 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    448                         }
    449 
    450                         if ( ! wp_can_install_language_pack() ) {
     442                        if ( ! wp_is_file_mod_allowed( 'can_install_language_pack' ) ) {
    451443                                $caps[] = 'do_not_allow';
    452444                        } elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
    453445                                $caps[] = 'do_not_allow';