Role/Capability: Introduce capabilities dedicated to installing and updating language files.

The new meta capabilities are called `install_languages` and `update_languages`. Prior to this change, there were no proper capability checks applied. Instead only the filesystem and related constants were checked, and for actual permissions a rather vague fallback was used where a user needed to have at least one of the other updating capabilities. In addition to being generally more verbose, the new capabilities make it possible for example to allow a user to update languages, but nothing else. By default they fall back to the original way of how they were handled.

Props johnbillion, flixos90.
Fixes #39677.


git-svn-id: https://develop.svn.wordpress.org/trunk@41268 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Felix Arntz
2017-08-18 18:30:28 +00:00
parent c56dd07a30
commit f16b2a650e
9 changed files with 68 additions and 21 deletions

View File

@@ -63,7 +63,7 @@ if ( $_POST ) {
);
// Handle translation install.
if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) { // @todo: Skip if already installed
if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) ) {
$language = wp_download_language_pack( $_POST['WPLANG'] );
if ( $language ) {
$_POST['WPLANG'] = $language;
@@ -342,7 +342,7 @@ if ( isset( $_GET['updated'] ) ) {
'selected' => $lang,
'languages' => $languages,
'translations' => $translations,
'show_available_translations' => wp_can_install_language_pack(),
'show_available_translations' => current_user_can( 'install_languages' ),
) );
?>
</td>