Changeset 41268
- Timestamp:
- 08/18/2017 06:30:28 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/menu.php
r40390 r41268 34 34 35 35 if ( ! is_multisite() ) { 36 if ( current_user_can( 'update_core' ) ) 36 if ( current_user_can( 'update_core' ) ) { 37 37 $cap = 'update_core'; 38 elseif ( current_user_can( 'update_plugins' ) )38 } elseif ( current_user_can( 'update_plugins' ) ) { 39 39 $cap = 'update_plugins'; 40 else40 } elseif ( current_user_can( 'update_themes' ) ) { 41 41 $cap = 'update_themes'; 42 } else { 43 $cap = 'update_languages'; 44 } 42 45 $submenu[ 'index.php' ][10] = array( sprintf( __('Updates %s'), "<span class='update-plugins count-{$update_data['counts']['total']}'><span class='update-count'>" . number_format_i18n($update_data['counts']['total']) . "</span></span>" ), $cap, 'update-core.php'); 43 46 unset( $cap ); -
trunk/src/wp-admin/network/settings.php
r41200 r41268 64 64 65 65 // Handle translation install. 66 if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) { // @todo: Skip if already installed66 if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) { 67 67 $language = wp_download_language_pack( $_POST['WPLANG'] ); 68 68 if ( $language ) { … … 343 343 'languages' => $languages, 344 344 'translations' => $translations, 345 'show_available_translations' => wp_can_install_language_pack(),345 'show_available_translations' => current_user_can( 'install_languages' ), 346 346 ) ); 347 347 ?> -
trunk/src/wp-admin/network/site-new.php
r41064 r41268 67 67 if ( '' === $_POST['WPLANG'] ) { 68 68 $meta['WPLANG'] = ''; // en_US 69 } elseif ( wp_can_install_language_pack() ) { 69 } elseif ( in_array( $_POST['WPLANG'], get_available_languages() ) ) { 70 $meta['WPLANG'] = $_POST['WPLANG']; 71 } elseif ( current_user_can( 'install_languages' ) ) { 70 72 $language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) ); 71 73 if ( $language ) { … … 235 237 'languages' => $languages, 236 238 'translations' => $translations, 237 'show_available_translations' => wp_can_install_language_pack(),239 'show_available_translations' => current_user_can( 'install_languages' ), 238 240 ) ); 239 241 ?> -
trunk/src/wp-admin/options-general.php
r41254 r41268 152 152 'languages' => $languages, 153 153 'translations' => $translations, 154 'show_available_translations' => ( ! is_multisite() || is_super_admin() ) && wp_can_install_language_pack(),154 'show_available_translations' => current_user_can( 'install_languages' ), 155 155 ) ); 156 156 -
trunk/src/wp-admin/options.php
r41254 r41268 178 178 179 179 // Handle translation install. 180 if ( ! empty( $_POST['WPLANG'] ) && ( ! is_multisite() || is_super_admin() ) ) { // @todo: Skip if already installed180 if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) { 181 181 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 182 182 183 if ( wp_can_install_language_pack() ) { 184 $language = wp_download_language_pack( $_POST['WPLANG'] ); 185 if ( $language ) { 186 $_POST['WPLANG'] = $language; 187 } 183 $language = wp_download_language_pack( $_POST['WPLANG'] ); 184 if ( $language ) { 185 $_POST['WPLANG'] = $language; 188 186 } 189 187 } -
trunk/src/wp-admin/update-core.php
r39808 r41268 20 20 } 21 21 22 if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_themes' ) && ! current_user_can( 'update_plugins' ) )22 if ( ! current_user_can( 'update_core' ) && ! current_user_can( 'update_themes' ) && ! current_user_can( 'update_plugins' ) && ! current_user_can( 'update_languages' ) ) 23 23 wp_die( __( 'Sorry, you are not allowed to update this site.' ) ); 24 24 … … 609 609 echo '</p>'; 610 610 611 if ( $core = current_user_can( 'update_core' ) )611 if ( current_user_can( 'update_core' ) ) { 612 612 core_upgrade_preamble(); 613 if ( $plugins = current_user_can( 'update_plugins' ) ) 613 } 614 if ( current_user_can( 'update_plugins' ) ) { 614 615 list_plugin_updates(); 615 if ( $themes = current_user_can( 'update_themes' ) ) 616 } 617 if ( current_user_can( 'update_themes' ) ) { 616 618 list_theme_updates(); 617 if ( $core || $plugins || $themes ) 619 } 620 if ( current_user_can( 'update_languages' ) ) { 618 621 list_translation_updates(); 619 unset( $core, $plugins, $themes ); 622 } 623 620 624 /** 621 625 * Fires after the core, plugin, and theme update tables. … … 730 734 } elseif ( 'do-translation-upgrade' == $action ) { 731 735 732 if ( ! current_user_can( 'update_ core' ) && ! current_user_can( 'update_plugins' ) && ! current_user_can( 'update_themes' ) )736 if ( ! current_user_can( 'update_languages' ) ) 733 737 wp_die( __( 'Sorry, you are not allowed to update this site.' ) ); 734 738 -
trunk/src/wp-includes/capabilities.php
r40999 r41268 393 393 } 394 394 break; 395 case 'install_languages': 396 case 'update_languages': 397 if ( ! function_exists( 'wp_can_install_language_pack' ) ) { 398 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 399 } 400 401 if ( ! wp_can_install_language_pack() ) { 402 $caps[] = 'do_not_allow'; 403 } elseif ( is_multisite() && ! is_super_admin( $user_id ) ) { 404 $caps[] = 'do_not_allow'; 405 } else { 406 $caps[] = 'install_languages'; 407 } 408 break; 395 409 case 'activate_plugins': 396 410 $caps[] = $cap; … … 827 841 return false; 828 842 } 843 844 /** 845 * Filters the user capabilities to grant the 'install_languages' capability as necessary. 846 * 847 * A user must have at least one out of the 'update_core', 'install_plugins', and 848 * 'install_themes' capabilities to qualify for 'install_languages'. 849 * 850 * @since 4.9.0 851 * 852 * @param array $allcaps An array of all the user's capabilities. 853 * @return array Filtered array of the user's capabilities. 854 */ 855 function wp_maybe_grant_install_languages_cap( $allcaps ) { 856 if ( ! empty( $allcaps['update_core'] ) || ! empty( $allcaps['install_plugins'] ) || ! empty( $allcaps['install_themes'] ) ) { 857 $allcaps['install_languages'] = true; 858 } 859 860 return $allcaps; 861 } -
trunk/src/wp-includes/default-filters.php
r41237 r41268 513 513 add_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10, 3 ); 514 514 515 // Capabilities 516 add_filter( 'user_has_cap', 'wp_maybe_grant_install_languages_cap', 1 ); 517 515 518 unset( $filter, $action ); -
trunk/tests/phpunit/tests/user/capabilities.php
r40999 r41268 234 234 'customize' => array( 'administrator' ), 235 235 'add_users' => array( 'administrator' ), 236 'install_languages' => array( 'administrator' ), 237 'update_languages' => array( 'administrator' ), 236 238 237 239 'edit_categories' => array( 'administrator', 'editor' ), … … 262 264 'edit_css' => array(), 263 265 'upgrade_network' => array(), 266 'install_languages' => array(), 267 'update_languages' => array(), 264 268 265 269 'customize' => array( 'administrator' ),
Note: See TracChangeset
for help on using the changeset viewer.