Make WordPress Core

Ticket #44215: 44215.2.diff

File 44215.2.diff, 5.7 KB (added by birgire, 6 years ago)
  • src/wp-includes/comment.php

    diff --git src/wp-includes/comment.php src/wp-includes/comment.php
    index bc72b6e..0d8a5a1 100644
    function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { 
    33703370                                        break;
    33713371                        }
    33723372
    3373                         if ( ! empty( $value ) ) {
    3374                                 $comment_data_to_export[] = array(
    3375                                         'name'  => $name,
    3376                                         'value' => $value,
    3377                                 );
    3378                         }
     3373                        $comment_data_to_export[] = array(
     3374                                'name'  => $name,
     3375                                'value' => $value,
     3376                        );
    33793377                }
    33803378
    33813379                $data_to_export[] = array(
  • src/wp-includes/user.php

    diff --git src/wp-includes/user.php src/wp-includes/user.php
    index 40f227c..cd33f82 100644
    function wp_user_personal_data_exporter( $email_address ) { 
    28852885        $user_data_to_export = array();
    28862886
    28872887        foreach ( $user_prop_to_export as $key => $name ) {
    2888                 $value = '';
     2888                $value = false;
    28892889
    28902890                switch ( $key ) {
    28912891                        case 'ID':
    function wp_user_personal_data_exporter( $email_address ) { 
    29012901                        case 'first_name':
    29022902                        case 'last_name':
    29032903                        case 'description':
    2904                                 $value = $user_meta[ $key ][0];
     2904                                if ( isset( $user_meta[ $key ] ) ) {
     2905                                        $value = $user_meta[ $key ][0];
     2906                                }
    29052907                                break;
    29062908                }
    29072909
    2908                 if ( ! empty( $value ) ) {
     2910                if ( false !== $value ) {
    29092911                        $user_data_to_export[] = array(
    29102912                                'name'  => $name,
    29112913                                'value' => $value,
  • tests/phpunit/tests/comment.php

    diff --git tests/phpunit/tests/comment.php tests/phpunit/tests/comment.php
    index fdfb48b..1bb5238 100644
    class Tests_Comment extends WP_UnitTestCase { 
    11451145                $this->assertTrue( $actual['done'] );
    11461146
    11471147                // Number of exported comments.
    1148                 $this->assertSame( 1, count( $actual['data'] ) );
     1148                $this->assertCount( 1, $actual['data'] );
    11491149
    11501150                // Number of exported comment properties.
    1151                 $this->assertSame( 8, count( $actual['data'][0]['data'] ) );
     1151                $this->assertCount( 8, $actual['data'][0]['data'] );
    11521152
    11531153                // Exported group.
    11541154                $this->assertSame( 'comments', $actual['data'][0]['group_id'] );
    class Tests_Comment extends WP_UnitTestCase { 
    12011201                        'comment_content'      => 'Comment',
    12021202                );
    12031203
    1204                 $c = self::factory()->comment->create( $args );
     1204                self::factory()->comment->create( $args );
    12051205
    12061206                $actual = wp_comments_personal_data_exporter( $args['comment_author_email'] );
    12071207
    12081208                $this->assertTrue( $actual['done'] );
    12091209
    12101210                // Number of exported comments.
    1211                 $this->assertSame( 1, count( $actual['data'] ) );
     1211                $this->assertCount( 1, $actual['data'] );
    12121212
    1213                 // Number of exported comment properties.
    1214                 $this->assertSame( 7, count( $actual['data'][0]['data'] ) );
     1213                // Number of exported comment properties. Empty properties should be included.
     1214                $this->assertCount( 8, $actual['data'][0]['data'] );
    12151215        }
    12161216
    12171217        /**
    class Tests_Comment extends WP_UnitTestCase { 
    12321232                        'comment_content'      => 'Comment',
    12331233                );
    12341234
    1235                 $c = self::factory()->comment->create( $args );
     1235                self::factory()->comment->create( $args );
    12361236
    12371237                $actual = wp_comments_personal_data_exporter( $args['comment_author_email'], 2 );
    12381238
    12391239                $this->assertTrue( $actual['done'] );
    12401240
    12411241                // Number of exported comments.
    1242                 $this->assertSame( 0, count( $actual['data'] ) );
     1242                $this->assertCount( 0, $actual['data'] );
    12431243        }
    12441244}
  • tests/phpunit/tests/user.php

    diff --git tests/phpunit/tests/user.php tests/phpunit/tests/user.php
    index 4f9fa2b..a113bf1 100644
    class Tests_User extends WP_UnitTestCase { 
    15811581        /**
    15821582         * Testing the `wp_user_personal_data_exporter_no_user` function when no user exists.
    15831583         *
     1584         * @group privacy
    15841585         * @ticket 43547
    15851586         */
    15861587        function test_wp_user_personal_data_exporter_no_user() {
    class Tests_User extends WP_UnitTestCase { 
    15951596        }
    15961597
    15971598        /**
    1598          * Testing the `wp_user_personal_data_exporter_no_user` function when the requested
    1599          * user exists.
     1599         * Testing the `wp_user_personal_data_exporter` function when the requested user exists.
    16001600         *
     1601         * @group privacy
    16011602         * @ticket 43547
    16021603         */
    16031604        function test_wp_user_personal_data_exporter() {
    class Tests_User extends WP_UnitTestCase { 
    16081609                $this->assertTrue( $actual['done'] );
    16091610
    16101611                // Number of exported users.
    1611                 $this->assertSame( 1, count( $actual['data'] ) );
     1612                $this->assertCount( 1, $actual['data'] );
    16121613
    16131614                // Number of exported user properties.
    1614                 $this->assertSame( 11, count( $actual['data'][0]['data'] ) );
     1615                $this->assertCount( 11, $actual['data'][0]['data'] );
     1616        }
     1617
     1618        /**
     1619         * User fields should be included in a data export when empty and excluded when they do not exist.
     1620         *
     1621         * @group privacy
     1622         * @ticket 44215
     1623         */
     1624        function test_wp_user_personal_data_exporter_removed_meta_fields() {
     1625                $test_user = new WP_User( self::$contrib_id );
     1626
     1627                $original_data = array(
     1628                        'description' => get_user_meta( $test_user->ID, 'description', true ),
     1629                        'first_name'  => get_user_meta( $test_user->ID, 'first_name', true ),
     1630                        'last_name'   => get_user_meta( $test_user->ID, 'last_name', true ),
     1631                );
     1632
     1633                delete_user_meta( $test_user->ID, 'first_name' );
     1634                delete_user_meta( $test_user->ID, 'last_name' );
     1635                update_user_meta( $test_user->ID, 'description', '' );
     1636
     1637                $actual = wp_user_personal_data_exporter( $test_user->user_email );
     1638
     1639                update_user_meta( $test_user->ID, 'description', $original_data['description'] );
     1640                update_user_meta( $test_user->ID, 'first_name', $original_data['first_name'] );
     1641                update_user_meta( $test_user->ID, 'last_name', $original_data['last_name'] );
     1642
     1643                $this->assertTrue( $actual['done'] );
     1644
     1645                // Number of exported users.
     1646                $this->assertCount( 1, $actual['data'] );
     1647
     1648                // Number of exported user properties. Empty fields remain, deleted fields do not.
     1649                $this->assertCount( 9, $actual['data'][0]['data'] );
    16151650        }
    16161651}