Make WordPress Core

Changeset 42607


Ignore:
Timestamp:
01/24/2018 10:58:22 PM (7 years ago)
Author:
SergeyBiryukov
Message:

Role/Capability: Make install_languages capability check less restrictive.

A user should still be able to have the capability, even when language packs cannot be automatically installed. The automatic installation part is separate from that now.

Props flixos90.
Merges [42606] to the 4.9 branch.
Fixes #42697.

Location:
branches/4.9
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/4.9

  • branches/4.9/src/wp-admin/network/settings.php

    r41617 r42607  
    8484
    8585    // Handle translation installation.
    86     if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) {
     86    if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
    8787        $language = wp_download_language_pack( $_POST['WPLANG'] );
    8888        if ( $language ) {
     
    375375                        }
    376376
    377                         wp_dropdown_languages( array(
    378                             'name'         => 'WPLANG',
    379                             'id'           => 'WPLANG',
    380                             'selected'     => $lang,
    381                             'languages'    => $languages,
    382                             'translations' => $translations,
    383                             'show_available_translations' => current_user_can( 'install_languages' ),
    384                         ) );
     377                        wp_dropdown_languages(
     378                            array(
     379                                'name'         => 'WPLANG',
     380                                'id'           => 'WPLANG',
     381                                'selected'     => $lang,
     382                                'languages'    => $languages,
     383                                'translations' => $translations,
     384                                'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
     385                            )
     386                        );
    385387                        ?>
    386388                    </td>
  • branches/4.9/src/wp-admin/network/site-new.php

    r41289 r42607  
    6969        } elseif ( in_array( $_POST['WPLANG'], get_available_languages() ) ) {
    7070            $meta['WPLANG'] = $_POST['WPLANG'];
    71         } elseif ( current_user_can( 'install_languages' ) ) {
     71        } elseif ( current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
    7272            $language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
    7373            if ( $language ) {
     
    231231                    }
    232232
    233                     wp_dropdown_languages( array(
    234                         'name'                        => 'WPLANG',
    235                         'id'                          => 'site-language',
    236                         'selected'                    => $lang,
    237                         'languages'                   => $languages,
    238                         'translations'                => $translations,
    239                         'show_available_translations' => current_user_can( 'install_languages' ),
    240                     ) );
     233                    wp_dropdown_languages(
     234                        array(
     235                            'name'                        => 'WPLANG',
     236                            'id'                          => 'site-language',
     237                            'selected'                    => $lang,
     238                            'languages'                   => $languages,
     239                            'translations'                => $translations,
     240                            'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
     241                        )
     242                    );
    241243                    ?>
    242244                </td>
  • branches/4.9/src/wp-admin/options-general.php

    r41986 r42607  
    159159                'languages'    => $languages,
    160160                'translations' => $translations,
    161                 'show_available_translations' => current_user_can( 'install_languages' ),
     161                'show_available_translations' => current_user_can( 'install_languages' ) && wp_can_install_language_pack(),
    162162            ) );
    163163
  • branches/4.9/src/wp-admin/options.php

    r41289 r42607  
    181181            require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    182182
    183             $language = wp_download_language_pack( $_POST['WPLANG'] );
    184             if ( $language ) {
    185                 $_POST['WPLANG'] = $language;
     183            if ( wp_can_install_language_pack() ) {
     184                $language = wp_download_language_pack( $_POST['WPLANG'] );
     185                if ( $language ) {
     186                    $_POST['WPLANG'] = $language;
     187                }
    186188            }
    187189        }
  • branches/4.9/src/wp-includes/capabilities.php

    r41885 r42607  
    433433    case 'install_languages':
    434434    case 'update_languages':
    435         if ( ! function_exists( 'request_filesystem_credentials' ) ) {
    436             require_once( ABSPATH . 'wp-admin/includes/file.php' );
    437         }
    438 
    439         if ( ! function_exists( 'wp_can_install_language_pack' ) ) {
    440             require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
    441         }
    442 
    443         if ( ! wp_can_install_language_pack() ) {
     435        if ( ! wp_is_file_mod_allowed( 'can_install_language_pack' ) ) {
    444436            $caps[] = 'do_not_allow';
    445437        } elseif ( is_multisite() && ! is_super_admin( $user_id ) ) {
Note: See TracChangeset for help on using the changeset viewer.