Skip to:
Content

BuddyPress.org

Ticket #6060: 6060.02.patch

File 6060.02.patch, 11.8 KB (added by dcavins, 4 years ago)

A few small changes.

  • src/bp-core/bp-core-taxonomy.php

    diff --git src/bp-core/bp-core-taxonomy.php src/bp-core/bp-core-taxonomy.php
    index 673259d..56a02aa 100644
    defined( 'ABSPATH' ) || exit; 
    2121 */
    2222function bp_register_default_taxonomies() {
    2323        // Member Type.
    24         register_taxonomy( 'bp_member_type', 'user', array(
     24        register_taxonomy( bp_get_member_type_tax_type(), 'user', array(
    2525                'public' => false,
    2626        ) );
    2727
  • src/bp-core/classes/class-bp-user-query.php

    diff --git src/bp-core/classes/class-bp-user-query.php src/bp-core/classes/class-bp-user-query.php
    index 95aab0c..0fc8904 100644
    class BP_User_Query { 
    780780
    781781                $tax_query = new WP_Tax_Query( array(
    782782                        array(
    783                                 'taxonomy' => 'bp_member_type',
     783                                'taxonomy' => bp_get_member_type_tax_type(),
    784784                                'field'    => 'name',
    785785                                'operator' => $operator,
    786786                                'terms'    => $types,
    class BP_User_Query { 
    788788                ) );
    789789
    790790                // Switch to the root blog, where member type taxonomies live.
    791                 $site_id  = bp_get_taxonomy_term_site_id( 'bp_member_type' );
     791                $site_id  = bp_get_taxonomy_term_site_id( bp_get_member_type_tax_type() );
    792792                $switched = false;
    793793                if ( $site_id !== get_current_blog_id() ) {
    794794                        switch_to_blog( $site_id );
  • src/bp-members/bp-members-cache.php

    diff --git src/bp-members/bp-members-cache.php src/bp-members/bp-members-cache.php
    index 49b4b50..db86108 100644
    defined( 'ABSPATH' ) || exit; 
    2020function bp_members_prefetch_member_type( BP_User_Query $bp_user_query ) {
    2121        $uncached_member_ids = bp_get_non_cached_ids( $bp_user_query->user_ids, 'bp_member_member_type' );
    2222
    23         $member_types = bp_get_object_terms( $uncached_member_ids, 'bp_member_type', array(
     23        $member_types = bp_get_object_terms( $uncached_member_ids, bp_get_member_type_tax_type(), array(
    2424                'fields' => 'all_with_object_id',
    2525        ) );
    2626
  • src/bp-members/bp-members-functions.php

    diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
    index 8ee5a6d..f37cee3 100644
    function bp_get_displayed_user() { 
    25062506/** Member Types *************************************************************/
    25072507
    25082508/**
     2509 * Output the slug of the member type taxonomy.
     2510 *
     2511 * @since 2.7.0
     2512 */
     2513function bp_member_type_tax_type() {
     2514        echo bp_get_member_type_tax_type();
     2515}
     2516
     2517/**
     2518 * Return the slug of the member type taxonomy.
     2519 *
     2520 * @since 2.7.0
     2521 *
     2522 * @return string The unique member taxonomy slug.
     2523 */
     2524function bp_get_member_type_tax_type() {
     2525        /**
     2526         * Filters the slug of the member type taxonomy.
     2527         *
     2528         * @since 2.7.0
     2529         *
     2530         * @param string $value Member type taxonomy slug.
     2531         */
     2532        return apply_filters( 'bp_get_member_type_tax_type', 'bp_member_type' );
     2533}
     2534
     2535/**
    25092536 * Register a member type.
    25102537 *
    25112538 * @since 2.2.0
    function bp_set_member_type( $user_id, $member_type, $append = false ) { 
    26762703                return false;
    26772704        }
    26782705
    2679         $retval = bp_set_object_terms( $user_id, $member_type, 'bp_member_type', $append );
     2706        $retval = bp_set_object_terms( $user_id, $member_type, bp_get_member_type_tax_type(), $append );
    26802707
    26812708        // Bust the cache if the type has been updated.
    26822709        if ( ! is_wp_error( $retval ) ) {
    function bp_remove_member_type( $user_id, $member_type ) { 
    27122739                return false;
    27132740        }
    27142741
    2715         $deleted = bp_remove_object_terms( $user_id, $member_type, 'bp_member_type' );
     2742        $deleted = bp_remove_object_terms( $user_id, $member_type, bp_get_member_type_tax_type() );
    27162743
    27172744        // Bust the cache if the type has been removed.
    27182745        if ( ! is_wp_error( $deleted ) ) {
    function bp_get_member_type( $user_id, $single = true ) { 
    27472774        $types = wp_cache_get( $user_id, 'bp_member_member_type' );
    27482775
    27492776        if ( false === $types ) {
    2750                 $types = bp_get_object_terms( $user_id, 'bp_member_type' );
     2777                $types = bp_get_object_terms( $user_id, bp_get_member_type_tax_type() );
    27512778
    27522779                if ( ! is_wp_error( $types ) ) {
    27532780                        $types = wp_list_pluck( $types, 'name' );
  • 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 1493087..24485d5 100644
    class BP_Members_Admin { 
    215215                                add_filter( 'set-screen-option',    array( $this, 'signup_screen_options' ), 10, 3 );
    216216                        }
    217217                }
     218
     219                /** Users List - Members Types ***************************************
     220         */
     221
     222                if ( is_admin() && ! empty( buddypress()->members->types ) ) {
     223
     224                        // Change type UI and bulk processing.
     225                        add_action( 'restrict_manage_users', array( $this, 'users_type_change_to'   ) );
     226                        add_action( 'load-users.php',        array( $this, 'users_type_bulk_change' ) );
     227
     228                        // Display for each user its type in a row.
     229                        add_filter( 'manage_users_columns',       array( $this, 'users_type_column' )        );
     230                        add_filter( 'manage_users_custom_column', array( $this, 'users_type_row'    ), 10, 3 );
     231
     232                        // Filter users by type.
     233                        add_filter( 'pre_get_users', array( $this, 'users_type_process_filter_by' ) );
     234                }
    218235        }
    219236
    220237        /**
    class BP_Members_Admin { 
    19051922         * @since 2.0.0
    19061923         *
    19071924         * @param string $action Delete, activate, or resend activation link.
     1925         *
    19081926         * @return string
    19091927         */
    19101928        public function signups_admin_manage( $action = '' ) {
    class BP_Members_Admin { 
    20322050
    20332051                <?php
    20342052        }
     2053
     2054        /** Users List Management ****************************************************/
     2055
     2056        /**
     2057         * Display a dropdown to change the member type of selected user(s).
     2058         *
     2059         * @since 2.7.0
     2060         *
     2061         * @param string $which Where this dropdown is displayed - top or bottom.
     2062         */
     2063        public function users_type_change_to( $which ) {
     2064                $id_name = 'bottom' === $which ? 'bp_change_type2' : 'bp_change_type';
     2065
     2066                // Bail if current user cannot promote users
     2067                if ( ! current_user_can( 'promote_users' ) ) {
     2068                        return;
     2069                }
     2070
     2071                $types = buddypress()->members->types; ?>
     2072
     2073            <label class="screen-reader-text" for="<?php echo $id_name; ?>"><?php _e( 'Change member type to&hellip;', 'buddypress' ) ?></label>
     2074            <select name="<?php echo $id_name; ?>" id="<?php echo $id_name; ?>" style="display:inline-block;float:none;">
     2075                <option value=""><?php _e( 'Change member type to&hellip;', 'buddypress' ) ?></option>
     2076
     2077                <?php foreach( $types as $type ) : ?>
     2078
     2079                                <option value="<?php echo esc_attr( $type->name ); ?>"><?php echo $type->labels['name']; ?></option>
     2080
     2081                <?php endforeach; ?>
     2082
     2083            </select>
     2084                <?php
     2085
     2086                submit_button( __( 'Change', 'buddypress' ), 'button', 'bp_change_member_type', false );
     2087
     2088        wp_nonce_field( 'bp-bulk-users-change-type', 'bp-bulk-users-change-type-nonce' );
     2089        }
     2090
     2091        /**
     2092         * Process bulk member type submission from the Users Table.
     2093         *
     2094         * @since 2.7.0
     2095         */
     2096        public function users_type_bulk_change() {
     2097                $this->users_type_change_notice();
     2098
     2099  $towrite = PHP_EOL . '$_REQUEST:' . print_r( $_REQUEST, TRUE );
     2100  $fp = fopen('members-type-bulk.txt', 'a');
     2101  fwrite($fp, $towrite);
     2102  fclose($fp);
     2103
     2104                // Bail if no users specified
     2105                if ( empty( $_REQUEST['users'] ) ) {
     2106                        return;
     2107                }
     2108
     2109                // Bail if this isn't a BuddyPress action.
     2110                if (
     2111                        ( empty( $_REQUEST['bp_change_type'] ) && empty( $_REQUEST['bp_change_type2'] ) ) ||
     2112                        empty( $_REQUEST['bp_change_member_type'] )
     2113                ) {
     2114                        return;
     2115                }
     2116
     2117                // Bail if nonce check fails.
     2118                check_admin_referer( 'bp-bulk-users-change-type', 'bp-bulk-users-change-type-nonce' );
     2119
     2120                // Bail if current user cannot promote users.
     2121                if ( ! current_user_can( 'promote_users' ) ) {
     2122                        return;
     2123                }
     2124
     2125                // Bail if the new type is empty.
     2126                $new_type = '';
     2127                if ( ! empty( $_REQUEST['bp_change_type2'] ) ) {
     2128                        $new_type = sanitize_text_field( $_REQUEST['bp_change_type2'] );
     2129                } elseif ( ! empty( $_REQUEST['bp_change_type'] ) ) {
     2130                        $new_type = sanitize_text_field( $_REQUEST['bp_change_type'] );
     2131                }
     2132                if ( empty( $new_type ) ) {
     2133                        return;
     2134                }
     2135
     2136                // Check that the selected type actually exists.
     2137                $types = buddypress()->members->types;
     2138                if ( empty( $types[ $new_type ] ) ) {
     2139                        return;
     2140                }
     2141
     2142                // Run through user ids.
     2143                $error = false;
     2144                foreach ( (array) $_REQUEST['users'] as $user_id ) {
     2145                        $user_id = (int) $user_id;
     2146
     2147                        // Get the old member type to check against.
     2148                        $user_type = bp_get_member_type( $user_id );
     2149
     2150                        // Set the new member type.
     2151                        if ( $new_type !== $user_type ) {
     2152                                $set = bp_set_member_type( $user_id, $new_type );
     2153                                if ( empty( $set ) || is_wp_error( $set ) ) {
     2154                                        $error = true;
     2155                                }
     2156                        }
     2157                }
     2158
     2159                // If there were any errors, show the error message.
     2160                if ( $error ) {
     2161                        $redirect = add_query_arg( array( 'updated' => 'member-type-change-error' ), wp_get_referer() );
     2162                } else {
     2163                        $redirect = add_query_arg( array( 'updated' => 'member-type-change-success' ), wp_get_referer() );
     2164                }
     2165
     2166                wp_redirect( $redirect );
     2167                exit();
     2168        }
     2169
     2170        /**
     2171         * Display an admin area notice upon member type bulk update.
     2172         *
     2173         * @since 2.7.0
     2174         */
     2175        public function users_type_change_notice() {
     2176                $updated = isset( $_REQUEST['updated'] ) ? $_REQUEST['updated'] : false;
     2177
     2178                // Display feedback.
     2179                if ( ! empty( $updated ) && in_array( $updated, array( 'member-type-change-error', 'member-type-change-success' ) ) ) {
     2180
     2181                        if ( 'member-type-change-error' === $updated ) {
     2182                                $notice = __( 'There was an error while changing member type. Please try again.', 'buddypress' );
     2183                        } else {
     2184                                $notice = __( 'Member type was successfully changed.', 'buddypress' );
     2185                        }
     2186
     2187                        bp_core_add_admin_notice( $notice );
     2188                }
     2189        }
     2190
     2191        /**
     2192         * Add Member Type column to the WordPress Users table.
     2193         *
     2194         * @since 2.7.0
     2195         *
     2196         * @param array $columns Users table columns.
     2197         *
     2198         * @return array $columns
     2199         */
     2200        public function users_type_column( $columns = array() ) {
     2201                $columns[ bp_get_member_type_tax_type() ] = __( 'Member Type', 'buddypress' );
     2202
     2203                return $columns;
     2204        }
     2205
     2206        /**
     2207         * Return member's type for display in the Users list table.
     2208         *
     2209         * @since 2.7.0
     2210         *
     2211         * @param string $retval
     2212         * @param string $column_name
     2213         * @param int $user_id
     2214         *
     2215         * @return string Displayable member type as a link to filter all users.
     2216         */
     2217        public function users_type_row( $retval = '', $column_name = '', $user_id = 0 ) {
     2218                // Only looking for member type column
     2219                if ( bp_get_member_type_tax_type() !== $column_name ) {
     2220                        return $retval;
     2221                }
     2222
     2223                // Get the member type.
     2224                $type   = bp_get_member_type( $user_id );
     2225                $retval = '';
     2226
     2227                // Translate user role for display.
     2228                if ( ! empty( $type ) ) {
     2229                        $types = buddypress()->members->types;
     2230
     2231                        if ( ! empty( $types[ $type ]->labels['singular_name'] ) ) {
     2232                                $url = add_query_arg( array( 'bp-member-type' => urlencode( $type ) ), wp_get_referer() );
     2233
     2234                                $retval = '<a href="' . esc_url( $url ) . '">' . translate_user_role( $types[ $type ]->labels['singular_name'] ) . '</a>';
     2235                        }
     2236                }
     2237
     2238                return $retval;
     2239        }
     2240
     2241        /*******************************************************************/
     2242
     2243        /**
     2244         * Filter in admin area on Users page those with a specified type.
     2245         *
     2246         * @param WP_Query $query
     2247         *
     2248         * @since 2.7.0
     2249         */
     2250        public function users_type_process_filter_by( $query ) {
     2251                global $pagenow;
     2252
     2253                if ( is_admin() && 'users.php' === $pagenow && ! empty( $_REQUEST['bp-member-type'] ) ) {
     2254                        $type_slug = sanitize_text_field( $_REQUEST['bp-member-type'] );
     2255
     2256                        // Check that the type actually exists.
     2257                        $types = buddypress()->members->types;
     2258                        if ( empty( $types[ $type_slug ] ) ) {
     2259                                return;
     2260                        }
     2261
     2262                        // Get the list of users, that are assigned to this member type.
     2263                        $type = get_term_by( 'slug', $type_slug, bp_get_member_type_tax_type() );
     2264
     2265                        if ( ! $type->term_id ) {
     2266                                return;
     2267                        }
     2268
     2269                        $user_ids = get_objects_in_term( $type->term_id, bp_get_member_type_tax_type() );
     2270
     2271                        if ( $user_ids && ! is_wp_error( $user_ids ) ) {
     2272                    $query->set( 'include', (array) $user_ids );
     2273                        }
     2274                }
     2275        }
    20352276}
    20362277endif; // End class_exists check.