Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
03/29/2020 05:32:05 PM (5 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/tests/phpunit/testcases/activity/functions.php

    r12420 r12605  
    18041804        $this->assertSame( 3, count( $actual['data'] ) );
    18051805    }
     1806
     1807    /**
     1808     * @ticket BP8175
     1809     */
     1810    public function test_activity_data_should_be_deleted_on_user_delete_non_multisite() {
     1811        if ( is_multisite() ) {
     1812            $this->markTestSkipped( __METHOD__ . ' requires non-multisite.' );
     1813        }
     1814
     1815        $u1 = self::factory()->user->create();
     1816        $a1 = self::factory()->activity->create(
     1817            array(
     1818                'user_id'   => $u1,
     1819                'component' => 'activity',
     1820                'type'      => 'activity_update',
     1821            )
     1822        );
     1823
     1824        $latest_update = array(
     1825            'id'      => $a1,
     1826            'content' => 'Foo',
     1827        );
     1828        bp_update_user_meta( $u1, 'bp_latest_update', $latest_update );
     1829
     1830        bp_activity_add_user_favorite( $a1, $u1 );
     1831
     1832        $found = bp_activity_get(
     1833            array(
     1834                'filter' => array(
     1835                    'user_id' => $u1,
     1836                )
     1837            )
     1838        );
     1839
     1840        $this->assertEqualSets( [ $a1 ], wp_list_pluck( $found['activities'], 'id' ) );
     1841        $this->assertEqualSets( [ $a1 ], bp_activity_get_user_favorites( $u1 ) );
     1842        $this->assertSame( $latest_update, bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1843
     1844        wp_delete_user( $u1 );
     1845
     1846        $found = bp_activity_get(
     1847            array(
     1848                'filter' => array(
     1849                    'user_id' => $u1,
     1850                )
     1851            )
     1852        );
     1853
     1854        $this->assertEmpty( $found['activities'] );
     1855        $this->assertEmpty( bp_activity_get_user_favorites( $u1 ) );
     1856        $this->assertSame( '', bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1857    }
     1858
     1859    /**
     1860     * @ticket BP8175
     1861     */
     1862    public function test_activity_data_should_be_deleted_on_user_delete_multisite() {
     1863        if ( ! is_multisite() ) {
     1864            $this->markTestSkipped( __METHOD__ . ' requires multisite.' );
     1865        }
     1866
     1867        $u1 = self::factory()->user->create();
     1868        $a1 = self::factory()->activity->create(
     1869            array(
     1870                'user_id'   => $u1,
     1871                'component' => 'activity',
     1872                'type'      => 'activity_update',
     1873            )
     1874        );
     1875
     1876        $latest_update = array(
     1877            'id'      => $a1,
     1878            'content' => 'Foo',
     1879        );
     1880        bp_update_user_meta( $u1, 'bp_latest_update', $latest_update );
     1881
     1882        bp_activity_add_user_favorite( $a1, $u1 );
     1883
     1884        $found = bp_activity_get(
     1885            array(
     1886                'filter' => array(
     1887                    'user_id' => $u1,
     1888                )
     1889            )
     1890        );
     1891
     1892        $this->assertEqualSets( [ $a1 ], wp_list_pluck( $found['activities'], 'id' ) );
     1893        $this->assertEqualSets( [ $a1 ], bp_activity_get_user_favorites( $u1 ) );
     1894        $this->assertSame( $latest_update, bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1895
     1896        wpmu_delete_user( $u1 );
     1897
     1898        $found = bp_activity_get(
     1899            array(
     1900                'filter' => array(
     1901                    'user_id' => $u1,
     1902                )
     1903            )
     1904        );
     1905
     1906        $this->assertEmpty( $found['activities'] );
     1907        $this->assertEmpty( bp_activity_get_user_favorites( $u1 ) );
     1908        $this->assertSame( '', bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1909    }
     1910
     1911    /**
     1912     * @ticket BP8175
     1913     */
     1914    public function test_activity_data_should_not_be_deleted_on_wp_delete_user_multisite() {
     1915        if ( ! is_multisite() ) {
     1916            $this->markTestSkipped( __METHOD__ . ' requires multisite.' );
     1917        }
     1918
     1919        $u1 = self::factory()->user->create();
     1920        $a1 = self::factory()->activity->create(
     1921            array(
     1922                'user_id'   => $u1,
     1923                'component' => 'activity',
     1924                'type'      => 'activity_update',
     1925            )
     1926        );
     1927
     1928        $latest_update = array(
     1929            'id'      => $a1,
     1930            'content' => 'Foo',
     1931        );
     1932        bp_update_user_meta( $u1, 'bp_latest_update', $latest_update );
     1933
     1934        bp_activity_add_user_favorite( $a1, $u1 );
     1935
     1936        $found = bp_activity_get(
     1937            array(
     1938                'filter' => array(
     1939                    'user_id' => $u1,
     1940                )
     1941            )
     1942        );
     1943
     1944        $this->assertEqualSets( [ $a1 ], wp_list_pluck( $found['activities'], 'id' ) );
     1945        $this->assertEqualSets( [ $a1 ], bp_activity_get_user_favorites( $u1 ) );
     1946        $this->assertSame( $latest_update, bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1947
     1948        wp_delete_user( $u1 );
     1949
     1950        $found = bp_activity_get(
     1951            array(
     1952                'filter' => array(
     1953                    'user_id' => $u1,
     1954                )
     1955            )
     1956        );
     1957
     1958        $this->assertEqualSets( [ $a1 ], wp_list_pluck( $found['activities'], 'id' ) );
     1959        $this->assertEqualSets( [ $a1 ], bp_activity_get_user_favorites( $u1 ) );
     1960        $this->assertSame( $latest_update, bp_get_user_meta( $u1, 'bp_latest_update', true ) );
     1961    }
    18061962}
Note: See TracChangeset for help on using the changeset viewer.