Skip to:
Content

bbPress.org

Ticket #2906: 2906.diff

File 2906.diff, 4.5 KB (added by netweb, 4 years ago)
  • src/includes/admin/users.php

     
    5252                add_action( 'edit_user_profile', array( $this, 'secondary_role_display' ) );
    5353
    5454                // WordPress user screen
    55                 add_action( 'restrict_manage_users',      array( $this, 'user_role_bulk_dropdown' )        );
     55                // Remvove the bottom list table "change forum role" dropdown from WordPress < 4.6.
     56                // See https://bbpress.trac.wordpress.org/ticket/2906.
     57                // See https://core.trac.wordpress.org/changeset/34636.
     58                if ( bbp_get_major_wp_version() < 4.6 ) {
     59                        add_action( 'restrict_manage_users',  array( __CLASS__, 'user_role_bulk_dropdown' )    );
     60                } else {
     61                        add_action( 'restrict_manage_users',  array( $this, 'user_role_bulk_dropdown' )        );
     62                }
    5663                add_filter( 'manage_users_columns',       array( $this, 'user_role_column'        )        );
    5764                add_filter( 'manage_users_custom_column', array( $this, 'user_role_row'           ), 10, 3 );
    5865
     
    130137         * Add bulk forums role dropdown to the WordPress users table
    131138         *
    132139         * @since 2.2.0 bbPress (r4360)
     140         * @since 2.6.0 bbPress (r6055) Introduced the `$which` parameter.
     141         *
     142         * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
    133143         */
    134         public static function user_role_bulk_dropdown() {
     144        public static function user_role_bulk_dropdown( $which ) {
    135145
     146                // Remvove the bottom list table "change forum role" dropdown from WordPress < 4.6.
     147                // See https://bbpress.trac.wordpress.org/ticket/2906.
     148                // See https://core.trac.wordpress.org/changeset/34636.
     149                if ( bbp_get_major_wp_version() < 4.6 ) {
     150                        remove_action( 'restrict_manage_users', array( __CLASS__, 'user_role_bulk_dropdown' ) );
     151                }
     152
    136153                // Bail if current user cannot promote users
    137154                if ( ! current_user_can( 'promote_users' ) ) {
    138155                        return;
     
    144161                // Only keymasters can set other keymasters
    145162                if ( ! bbp_is_user_keymaster() ) {
    146163                        unset( $dynamic_roles[ bbp_get_keymaster_role() ] );
    147                 } ?>
     164                }
    148165
    149                 <label class="screen-reader-text" for="bbp-new-role"><?php esc_html_e( 'Change forum role to&hellip;', 'bbpress' ) ?></label>
    150                 <select name="bbp-new-role" id="bbp-new-role" style="display:inline-block; float:none;">
     166                $select_id = 'bottom' === $which ? 'bbp-new-role2' : 'bbp-new-role';
     167                $button_id = 'bottom' === $which ? 'bbp-change-role2' : 'bbp-change-role';
     168                ?>
     169
     170                <label class="screen-reader-text" for="<?php echo $select_id; ?>"><?php esc_html_e( 'Change forum role to&hellip;', 'bbpress' ) ?></label>
     171                <select name="<?php echo $select_id; ?>" id="<?php echo $select_id; ?>" style="display:inline-block; float:none;">
    151172                        <option value=''><?php esc_html_e( 'Change forum role to&hellip;', 'bbpress' ) ?></option>
    152173                        <?php foreach ( $dynamic_roles as $role => $details ) : ?>
    153174                                <option value="<?php echo esc_attr( $role ); ?>"><?php echo translate_user_role( $details['name'] ); ?></option>
    154175                        <?php endforeach; ?>
    155                 </select><?php submit_button( __( 'Change', 'bbpress' ), 'secondary', 'bbp-change-role', false );
     176                </select><?php submit_button( __( 'Change', 'bbpress' ), 'secondary', $button_id, false );
    156177
    157178                wp_nonce_field( 'bbp-bulk-users', 'bbp-bulk-users-nonce' );
    158179        }
     
    175196                }
    176197
    177198                // Bail if this isn't a bbPress action
    178                 if ( empty( $_REQUEST['bbp-new-role'] ) || empty( $_REQUEST['bbp-change-role'] ) ) {
     199                if ( ( empty( $_REQUEST['bbp-new-role'] ) && empty( $_REQUEST['bbp-new-role2'] ) ) || ( empty( $_REQUEST['bbp-change-role'] ) && empty( $_REQUEST['bbp-change-role2'] ) ) ) {
    179200                        return;
    180201                }
    181202
     203                $new_role = false;
     204                if ( ! empty( $_REQUEST['bbp-change-role2'] ) && ! empty( $_REQUEST['bbp-new-role2'] ) ) {
     205                        $new_role = $_REQUEST['bbp-new-role2'];
     206                } elseif ( ! empty( $_REQUEST['bbp-change-role'] ) && ! empty( $_REQUEST['bbp-new-role'] ) ) {
     207                        $new_role = $_REQUEST['bbp-new-role'];
     208                }
     209
    182210                // Check that the new role exists
    183211                $dynamic_roles = bbp_get_dynamic_roles();
    184                 if ( empty( $dynamic_roles[ $_REQUEST['bbp-new-role'] ] ) ) {
     212                if ( ! $new_role || empty( $dynamic_roles[ $new_role ] ) ) {
    185213                        return;
    186214                }
    187215
     
    207235
    208236                        // Set up user and role data
    209237                        $user_role = bbp_get_user_role( $user_id );
    210                         $new_role  = sanitize_text_field( $_REQUEST['bbp-new-role'] );
     238                        $new_role  = sanitize_text_field( $new_role );
    211239
    212240                        // Only keymasters can set other keymasters
    213241                        if ( in_array( bbp_get_keymaster_role(), array( $user_role, $new_role ) ) && ! bbp_is_user_keymaster() ) {