Skip to:
Content

BuddyPress.org

Ticket #8292: 8292.patch

File 8292.patch, 10.3 KB (added by vapvarun, 3 years ago)

Initial Patch

  • src/bp-members/bp-members-functions.php

    diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
    index d940b9a5f..1d353c40b 100644
    add_action( bp_get_member_type_tax_name() . '_add_form', 'bp_insert_member_types 
    29752975 *                            false to replace. Default: false.
    29762976 * @return false|array $retval See {@see bp_set_object_terms()}.
    29772977 */
    2978 function bp_set_member_type( $user_id, $member_type, $append = false ) {
     2978function bp_set_member_type( $user_id, $member_types, $append = false ) {
     2979
    29792980        // Pass an empty $member_type to remove a user's type.
    2980         if ( ! empty( $member_type ) && ! bp_get_member_type_object( $member_type ) ) {
     2981        if ( empty( $member_types ) && ! is_array( $member_types ) ) {
    29812982                return false;
    29822983        }
    29832984
    2984         $retval = bp_set_object_terms( $user_id, $member_type, bp_get_member_type_tax_name(), $append );
     2985        $retval = bp_set_object_terms( $user_id, $member_types, bp_get_member_type_tax_name(), $append );
    29852986
    29862987        // Bust the cache if the type has been updated.
    29872988        if ( ! is_wp_error( $retval ) ) {
    function bp_set_member_type( $user_id, $member_type, $append = false ) { 
    29962997                 * @param string $member_type Member type.
    29972998                 * @param bool   $append      Whether the type is being appended to existing types.
    29982999                 */
    2999                 do_action( 'bp_set_member_type', $user_id, $member_type, $append );
     3000                do_action( 'bp_set_member_type', $user_id, $member_types, $append );
    30003001        }
    30013002
    30023003        return $retval;
  • src/bp-members/classes/class-bp-members-admin.php

    diff --git src/bp-members/classes/class-bp-members-admin.php src/bp-members/classes/class-bp-members-admin.php
    index d344b5d7c..d58b4c891 100644
    class BP_Members_Admin { 
    12861286                        return;
    12871287                }
    12881288
    1289                 $types = bp_get_member_types( array(), 'objects' );
    1290                 $current_type = bp_get_member_type( $user->ID );
     1289                $types           = bp_get_member_types( array(), 'object' );
     1290                $current_types   = bp_get_member_type( $user->ID, false );
     1291                $selected                = '';
    12911292                ?>
    1292 
    1293                 <label for="bp-members-profile-member-type" class="screen-reader-text"><?php
     1293                <label for="bp-members-profile-member-type" class="screen-reader-text">
     1294                        <?php
    12941295                        /* translators: accessibility text */
    12951296                        esc_html_e( 'Select member type', 'buddypress' );
    1296                 ?></label>
    1297                 <select name="bp-members-profile-member-type" id="bp-members-profile-member-type">
    1298                         <option value="" <?php selected( '', $current_type ); ?>><?php
    1299                                 /* translators: no option picked in select box */
    1300                                 esc_attr_e( '----', 'buddypress' );
    1301                         ?></option>
     1297                        ?>
     1298                </label>
     1299
     1300                <select name="bp-members-profile-member-type[]" id="bp-members-profile-member-type" multiple="multiple">
     1301                        <option value=""><?php
     1302
     1303                                        /* translators: no option picked in select box */
     1304                                        esc_attr_e( '----', 'buddypress' );
     1305                                        ?>
     1306                        </option>
    13021307                        <?php foreach ( $types as $type ) : ?>
    1303                                 <option value="<?php echo esc_attr( $type->name ) ?>" <?php selected( $type->name, $current_type ) ?>><?php echo esc_html( $type->labels['singular_name'] ) ?></option>
     1308                                <?php if( ! empty( $current_types ) && in_array( $type->name, $current_types ) ){
     1309                                        $selected = 'selected';
     1310                                }else {
     1311                                                $selected = '';
     1312                                }?>
     1313                                <option value="<?php echo esc_attr( $type->name ); ?>" <?php echo esc_attr( $selected );?>><?php echo esc_html( $type->labels['singular_name'] ); ?></option>
    13041314                        <?php endforeach; ?>
    13051315                </select>
    13061316
    class BP_Members_Admin { 
    13091319                wp_nonce_field( 'bp-member-type-change-' . $user->ID, 'bp-member-type-nonce' );
    13101320        }
    13111321
     1322
    13121323        /**
    13131324         * Process changes from the Member Type metabox.
    13141325         *
    class BP_Members_Admin { 
    13201331                }
    13211332
    13221333                $user_id = $this->get_user_id();
     1334                $member_types = array();
    13231335
    13241336                check_admin_referer( 'bp-member-type-change-' . $user_id, 'bp-member-type-nonce' );
    13251337
    class BP_Members_Admin { 
    13281340                        return;
    13291341                }
    13301342
    1331                 // Member type string must either reference a valid member type, or be empty.
    1332                 $member_type = stripslashes( $_POST['bp-members-profile-member-type'] );
    1333                 if ( ! empty( $member_type ) && ! bp_get_member_type_object( $member_type ) ) {
    1334                         return;
     1343
     1344                foreach ( $_POST['bp-members-profile-member-type'] as $key => $types ) {
     1345                        // Member type string must either reference a valid member type, or be empty.
     1346                        $member_type = stripslashes( $types );
     1347                        if ( ! empty( $member_type ) && ! bp_get_member_type_object( $member_type ) ) {
     1348                                return;
     1349                        }
     1350
     1351                        $member_types[$key] = $member_type;
    13351352                }
    13361353
     1354
    13371355                /*
    13381356                 * If an invalid member type is passed, someone's doing something
    13391357                 * fishy with the POST request, so we can fail silently.
    13401358                 */
    1341                 if ( bp_set_member_type( $user_id, $member_type ) ) {
     1359                if ( bp_set_member_type( $user_id, $member_types ) ) {
    13421360                        // @todo Success messages can't be posted because other stuff happens on the page load.
    13431361                }
    13441362        }
    class BP_Members_Admin { 
    23192337
    23202338                // `$which` is only passed in WordPress 4.6+. Avoid duplicating controls in earlier versions.
    23212339                static $displayed = false;
     2340                $counter = 0;
    23222341                if ( version_compare( bp_get_major_wp_version(), '4.6', '<' ) && $displayed ) {
    23232342                        return;
    23242343                }
    class BP_Members_Admin { 
    23262345
    23272346                $id_name = 'bottom' === $which ? 'bp_change_type2' : 'bp_change_type';
    23282347
    2329                 $types = bp_get_member_types( array(), 'objects' ); ?>
     2348                $types = bp_get_member_types( array(), 'objects' );
     2349                ?>
    23302350
    2331                 <label class="screen-reader-text" for="<?php echo $id_name; ?>"><?php _e( 'Change member type to&hellip;', 'buddypress' ) ?></label>
    2332                 <select name="<?php echo $id_name; ?>" id="<?php echo $id_name; ?>" style="display:inline-block;float:none;">
    2333                         <option value=""><?php _e( 'Change member type to&hellip;', 'buddypress' ) ?></option>
     2351        <label class="screen-reader-text" for="<?php echo $id_name; ?>"><?php _e( 'Change member type to&hellip;', 'buddypress' ); ?></label>
    23342352
    2335                         <?php foreach( $types as $type ) : ?>
     2353        <select name="<?php echo $id_name; ?>" id="<?php echo $id_name; ?>" style="display:inline-block;float:none;">
     2354                <option value=""><?php _e( 'Change member type to&hellip;', 'buddypress' ); ?></option>
    23362355
    2337                                 <option value="<?php echo esc_attr( $type->name ); ?>"><?php echo esc_html( $type->labels['singular_name'] ); ?></option>
     2356                        <?php foreach ( $types as $type ) : ?>
    23382357
    2339                         <?php endforeach; ?>
     2358                        <option value="<?php echo esc_attr( $type->name ); ?>"><?php echo esc_html( $type->labels['singular_name'] ); ?></option>
     2359
     2360                <?php endforeach; ?>
     2361
     2362                <option value="remove_member_type"><?php _e( 'No Member Type', 'buddypress' ); ?></option>
     2363
     2364        </select>
    23402365
    2341                         <option value="remove_member_type"><?php _e( 'No Member Type', 'buddypress' ) ?></option>
    23422366
    2343                 </select>
    23442367                <?php
    23452368                wp_nonce_field( 'bp-bulk-users-change-type-' . bp_loggedin_user_id(), 'bp-bulk-users-change-type-nonce' );
    23462369                submit_button( __( 'Change', 'buddypress' ), 'button', 'bp_change_member_type', false );
     2370
    23472371        }
    23482372
    23492373        /**
    class BP_Members_Admin { 
    24662490         *
    24672491         * @param string $retval
    24682492         * @param string $column_name
    2469          * @param int $user_id
     2493         * @param int    $user_id
    24702494         *
    24712495         * @return string Member type as a link to filter all users.
    24722496         */
    class BP_Members_Admin { 
    24772501                }
    24782502
    24792503                // Get the member type.
    2480                 $type = bp_get_member_type( $user_id );
     2504                $types = bp_get_member_type( $user_id, false );
    24812505
    2482                 // Output the
    2483                 if ( $type_obj = bp_get_member_type_object( $type ) ) {
    2484                         $url = add_query_arg( array( 'bp-member-type' => urlencode( $type ) ) );
    2485                         $retval = '<a href="' . esc_url( $url ) . '">' . esc_html( $type_obj->labels['singular_name'] ) . '</a>';
    2486                 }
     2506                if( ! empty( $types ) ){
    24872507
    2488                 return $retval;
     2508                        $member_types = '';
     2509
     2510                        if ( count( $types ) > 5 ) {
     2511                                $types = array_slice( $types, 0, 5 );
     2512                        }
     2513
     2514                        foreach ( $types as $key => $type ) {
     2515                                // Output the
     2516                                if ( $type_obj = bp_get_member_type_object( $type ) ) {
     2517
     2518                                        if ( ! empty( $member_types ) ) {
     2519                                                $member_types .= ', ';
     2520                                        }
     2521
     2522                                        $url   = add_query_arg( array( 'bp-member-type' => urlencode( $type ) ) );
     2523                                        $member_types .= '<a href="' . esc_url( $url ) . '">' . esc_html( $type_obj->labels['singular_name'] ) . '</a>';
     2524                                }
     2525                        }
     2526
     2527                        if ( ! empty( $member_types ) ) {
     2528                                $retval .= '<br />' . $member_types;
     2529                        }
     2530                        return $retval;
     2531                }
    24892532        }
    24902533
    24912534        /**
  • src/bp-members/classes/class-bp-signup.php

    diff --git src/bp-members/classes/class-bp-signup.php src/bp-members/classes/class-bp-signup.php
    index e857b9209..93b6087f8 100644
    class BP_Signup { 
    160160                        'bp_core_signups_get_args'
    161161                );
    162162
    163                 // Whitelist sanitization.
     163                // Make sure the orderby clause is allowed.
    164164                if ( ! in_array( $r['orderby'], array( 'login', 'email', 'registered', 'activated' ), true ) ) {
    165165                        $r['orderby'] = 'signup_id';
    166166                }
  • src/bp-templates/bp-legacy/js/password-verify.js

    diff --git src/bp-templates/bp-legacy/js/password-verify.js src/bp-templates/bp-legacy/js/password-verify.js
    index 47c01f7e9..14e530c22 100644
     
    1414                        return;
    1515                }
    1616
    17                 strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     17                // wp.passwordStrength.userInputBlacklist() has been deprecated in WP 5.5.0.
     18                if ( 'function' === typeof wp.passwordStrength.userInputDisallowedList ) {
     19                        strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass2 );
     20                } else {
     21                        strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     22                }
    1823
    1924                switch ( strength ) {
    2025                        case 2:
  • src/bp-templates/bp-nouveau/js/password-verify.js

    diff --git src/bp-templates/bp-nouveau/js/password-verify.js src/bp-templates/bp-nouveau/js/password-verify.js
    index a0f9e278d..db822f16c 100644
     
    2121                        return;
    2222                }
    2323
    24                 strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     24                // wp.passwordStrength.userInputBlacklist() has been deprecated in WP 5.5.0.
     25                if ( 'function' === typeof wp.passwordStrength.userInputDisallowedList ) {
     26                        strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass2 );
     27                } else {
     28                        strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 );
     29                }
    2530
    2631                switch ( strength ) {
    2732                        case 2: