Make WordPress Core

Ticket #46884: 46884.patch

File 46884.patch, 2.6 KB (added by samful, 4 years ago)
  • wp-admin/network/settings.php

    diff --git wp-admin/network/settings.php wp-admin/network/settings.php
    index 2a26b48..9f0cad2 100644
    if ( $_POST ) { 
    7575                'registrationnotification'    => 'no',
    7676                'upload_space_check_disabled' => 1,
    7777                'add_new_users'               => 0,
     78                'privacy_permissions'    => 1,
    7879        );
    7980        foreach ( $checked_options as $option_name => $option_unchecked_value ) {
    8081                if ( ! isset( $_POST[ $option_name ] ) ) {
    if ( $_POST ) { 
    106107                'WPLANG',
    107108                'new_admin_email',
    108109                'first_comment_email',
     110                'privacy_permissions'
    109111        );
    110112
    111113        // Handle translation installation.
    if ( isset( $_GET['updated'] ) ) { 
    474476                        </tr>
    475477                </table>
    476478
     479                <h2><?php _e( 'Privacy Settings' ); ?></h2>
     480                <table id="menu" class="form-table">
     481                        <tr>
     482                                <th scope="row"><?php _e( 'Privacy policy permissions' ); ?></th>
     483                                <?php
     484                                if ( ! get_site_option( 'privacy_permissions' ) ) {
     485                                        update_site_option( 'privacy_permissions', 'super_admin' );
     486                                }
     487                                $privacy_permissions = get_site_option( 'privacy_permissions' );
     488                                ?>
     489                                <td>
     490                                        <fieldset>
     491                                                <legend class="screen-reader-text"><?php _e( 'Privacy policy permisisons' ); ?></legend>
     492                                                <label><input name="privacy_permissions" type="radio" id="privacy-super-admins" value="super_admin"<?php checked( $privacy_permissions, "super_admin" ); ?> /> <?php _e( 'Only allow Super Admins to edit the privacy policy page' ); ?></label><br />
     493                                                <label><input name="privacy_permissions" type="radio" id="privacy-admins" value="admin"<?php checked( $privacy_permissions, "admin" ); ?> /> <?php _e( 'Admins can edit their own sites\'s privacy policy page'); ?></label><br />
     494                                        </fieldset>
     495                                </td>
     496                        </tr>
     497                </table>
     498
    477499                <?php
    478500                /**
    479501                 * Fires at the end of the Network Settings form, before the submit button.
  • wp-includes/capabilities.php

    diff --git wp-includes/capabilities.php wp-includes/capabilities.php
    index f48cb58..e142f4e 100644
    function map_meta_cap( $cap, $user_id, ...$args ) { 
    583583                case 'export_others_personal_data':
    584584                case 'erase_others_personal_data':
    585585                case 'manage_privacy_options':
    586                         $caps[] = is_multisite() ? 'manage_network' : 'manage_options';
     586                        if (is_multisite() && get_site_option( 'privacy_permissions' ) == "admin" && 'manage_options'){
     587                                $caps[] = 'manage_options';
     588                        } elseif ( is_multisite() ){
     589                                $caps[] = 'manage_network';
     590                        } else {
     591                                $caps[] = 'manage_options';
     592                        }
    587593                        break;
    588594                default:
    589595                        // Handle meta capabilities for custom post types.