Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
03/29/2020 05:32:05 PM (6 years ago)
Author:
boonebgorges
Message:

Don't delete user data on delete_user hook on Multisite.

The new function bp_remove_user_data_on_delete_user_hook(), which defaults
to false on Multisite and true otherwise, helps BuddyPress to differentiate
between the use of wp_delete_user() to delete a user account from an
installation (typical on non-Multisite) and its use to remove a user from
a site in a Multisite instance.

Props imath.

Fixes #8175.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/bp-members-functions.php

    r12602 r12605  
    12631263
    12641264/**
     1265 * Determines whether user data should be removed on the 'delete_user' hook.
     1266 *
     1267 * WordPress's 'delete_user' hook is ambiguous: on a standard installation, it means that a user
     1268 * account is being removed from the system, while on Multisite it simply means the user is
     1269 * being removed from a specific site (ie its roles are being revoked). As a rule, this means
     1270 * that BuddyPress should remove user data on the delete_user hook only on non-Multisite
     1271 * installations - only when the user account is being removed altogether. However, this behavior
     1272 * can be filtered in a global, per-user, or per-component fashion.
     1273 *
     1274 * @since 6.0.0
     1275 *
     1276 * @param string $data_type Type of data to be removed.
     1277 * @param int    $user_id   ID of the user, as passed to 'delete_user'.
     1278 * @return bool
     1279 */
     1280function bp_remove_user_data_on_delete_user_hook( $component, $user_id ) {
     1281    $remove = ! is_multisite();
     1282
     1283    /**
     1284     * Filters whether to remove user data on the 'delete_user' hook.
     1285     *
     1286     * @param bool   $remove    Whether data should be removed.
     1287     * @param string $data_type Type of data to be removed.
     1288     * @param int    $user_id   ID of the user, as passed to 'delete_user'.
     1289     */
     1290    return apply_filters( 'bp_remove_user_data_on_delete_user_hook', $remove, $component, $user_id );
     1291}
     1292
     1293/**
    12651294 * Delete a user's avatar when the user is deleted.
    12661295 *
     
    12771306}
    12781307add_action( 'wpmu_delete_user', 'bp_core_delete_avatar_on_user_delete' );
    1279 add_action( 'delete_user', 'bp_core_delete_avatar_on_user_delete' );
     1308
     1309/**
     1310 * Deletes last_activity data on the 'delete_user' hook.
     1311 *
     1312 * @since 6.0.0
     1313 *
     1314 * @param int $user_id The ID of the deleted user.
     1315 */
     1316function bp_core_delete_avatar_on_delete_user( $user_id ) {
     1317    if ( ! bp_remove_user_data_on_delete_user_hook( 'avatar', $user_id ) ) {
     1318        return;
     1319    }
     1320
     1321    bp_core_delete_avatar_on_user_delete( $user_id );
     1322}
     1323add_action( 'delete_user', 'bp_core_delete_avatar_on_delete_user' );
    12801324
    12811325/**
     
    13451389}
    13461390add_action( 'wpmu_delete_user',  'bp_core_remove_data' );
    1347 add_action( 'delete_user',       'bp_core_remove_data' );
    13481391add_action( 'bp_make_spam_user', 'bp_core_remove_data' );
     1392
     1393/**
     1394 * Deletes last_activity data on the 'delete_user' hook.
     1395 *
     1396 * @since 6.0.0
     1397 *
     1398 * @param int $user_id The ID of the deleted user.
     1399 */
     1400function bp_core_remove_data_on_delete_user( $user_id ) {
     1401    if ( ! bp_remove_user_data_on_delete_user_hook( 'last_activity', $user_id ) ) {
     1402        return;
     1403    }
     1404
     1405    bp_core_remove_data( $user_id );
     1406}
     1407add_action( 'delete_user', 'bp_core_remove_data_on_delete_user' );
    13491408
    13501409/**
     
    28382897}
    28392898add_action( 'wpmu_delete_user', 'bp_remove_member_type_on_user_delete' );
    2840 add_action( 'delete_user', 'bp_remove_member_type_on_user_delete' );
     2899
     2900/**
     2901 * Deletes user member type on the 'delete_user' hook.
     2902 *
     2903 * @since 6.0.0
     2904 *
     2905 * @param int $user_id The ID of the deleted user.
     2906 */
     2907function bp_remove_member_type_on_delete_user( $user_id ) {
     2908    if ( ! bp_remove_user_data_on_delete_user_hook( 'member_type', $user_id ) ) {
     2909        return;
     2910    }
     2911
     2912    bp_remove_member_type_on_user_delete( $user_id );
     2913}
     2914add_action( 'delete_user', 'bp_remove_member_type_on_delete_user' );
    28412915
    28422916/**
Note: See TracChangeset for help on using the changeset viewer.