Skip to:
Content

BuddyPress.org

Ticket #8175: 8175.diff

File 8175.diff, 3.4 KB (added by boonebgorges, 5 years ago)
  • src/bp-xprofile/bp-xprofile-functions.php

    diff --git src/bp-xprofile/bp-xprofile-functions.php src/bp-xprofile/bp-xprofile-functions.php
    index 2ba68eaf8..4745a5d2f 100644
    function xprofile_remove_data( $user_id ) { 
    893893        BP_XProfile_ProfileData::delete_data_for_user( $user_id );
    894894}
    895895add_action( 'wpmu_delete_user',  'xprofile_remove_data' );
    896 add_action( 'delete_user',       'xprofile_remove_data' );
    897896add_action( 'bp_make_spam_user', 'xprofile_remove_data' );
    898897
     898/**
     899 * Deletes user XProfile data on the 'delete_user' hook.
     900 *
     901 * On multisite, the 'delete_user' indicates only that the user is no longer a member of a
     902 * site. In this case, the hook should not trigger data deletion.
     903 *
     904 * @since 6.0.0
     905 *
     906 * @param int $user_id The ID of the deleted user.
     907 */
     908function xprofile_remove_data_on_delete_user( $user_id ) {
     909        if ( is_multisite() ) {
     910                return;
     911        }
     912
     913        xprofile_remove_data( $user_id );
     914}
     915add_action( 'delete_user', 'xprofile_remove_data_on_delete_user' );
     916
    899917/*** XProfile Meta ****************************************************/
    900918
    901919/**
  • tests/phpunit/testcases/xprofile/functions.php

    diff --git tests/phpunit/testcases/xprofile/functions.php tests/phpunit/testcases/xprofile/functions.php
    index bc36002e4..051208353 100644
    Bar!'; 
    11311131                // Number of exported user properties.
    11321132                $this->assertSame( 3, count( $actual['data'][0]['data'] ) );
    11331133        }
     1134
     1135        /**
     1136         * @group bbg
     1137         */
     1138        public function test_xprofile_data_should_be_deleted_on_user_delete_non_multisite() {
     1139                if ( is_multisite() ) {
     1140                        $this->markTestSkipped( __METHOD__ . ' requires non-multisite.' );
     1141                }
     1142
     1143                $u = self::factory()->user->create();
     1144
     1145                $fg = self::factory()->xprofile_group->create();
     1146                $f1 = self::factory()->xprofile_field->create(
     1147                        array(
     1148                                'field_group_id' => $fg,
     1149                        )
     1150                );
     1151
     1152                xprofile_set_field_data( $f1, $u, 'foo' );
     1153                $this->assertSame( 'foo', xprofile_get_field_data( $f1, $u ) );
     1154
     1155                wp_delete_user( $u );
     1156
     1157                $this->assertSame( '', xprofile_get_field_data( $f1, $u ) );
     1158        }
     1159
     1160        /**
     1161         * @group bbg
     1162         */
     1163        public function test_xprofile_data_should_be_deleted_on_user_delete_multisite() {
     1164                if ( ! is_multisite() ) {
     1165                        $this->markTestSkipped( __METHOD__ . ' requires multisite.' );
     1166                }
     1167
     1168                $u = self::factory()->user->create();
     1169
     1170                $fg = self::factory()->xprofile_group->create();
     1171                $f1 = self::factory()->xprofile_field->create(
     1172                        array(
     1173                                'field_group_id' => $fg,
     1174                        )
     1175                );
     1176
     1177                xprofile_set_field_data( $f1, $u, 'foo' );
     1178                $this->assertSame( 'foo', xprofile_get_field_data( $f1, $u ) );
     1179
     1180                wpmu_delete_user( $u );
     1181
     1182                $this->assertSame( '', xprofile_get_field_data( $f1, $u ) );
     1183        }
     1184
     1185        /**
     1186         * @group bbg
     1187         */
     1188        public function test_xprofile_data_should_not_be_deleted_on_wp_delete_user_multisite() {
     1189                if ( ! is_multisite() ) {
     1190                        $this->markTestSkipped( __METHOD__ . ' requires multisite.' );
     1191                }
     1192
     1193                $u = self::factory()->user->create();
     1194
     1195                $fg = self::factory()->xprofile_group->create();
     1196                $f1 = self::factory()->xprofile_field->create(
     1197                        array(
     1198                                'field_group_id' => $fg,
     1199                        )
     1200                );
     1201
     1202                xprofile_set_field_data( $f1, $u, 'foo' );
     1203                $this->assertSame( 'foo', xprofile_get_field_data( $f1, $u ) );
     1204
     1205                wp_delete_user( $u );
     1206                var_Dump( BP_PLUGIN_DIR );
     1207
     1208                $this->assertSame( 'foo', xprofile_get_field_data( $f1, $u ) );
     1209        }
    11341210}