Make WordPress Core

Ticket #44141: 44141.diff

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

     
    34403440                )
    34413441        );
    34423442
     3443        /* translators: Name of a comment's author after being anonymized. */
    34433444        $anon_author = __( 'Anonymous' );
    34443445        $messages    = array();
    34453446
     
    34863487                $updated = $wpdb->update( $wpdb->comments, $anonymized_comment, $args );
    34873488
    34883489                if ( $updated ) {
     3490                        update_comment_meta( $comment_id, '_wp_anonymized', true );
    34893491                        $items_removed = true;
    34903492                        clean_comment_cache( $comment_id );
    34913493                } else {
  • src/wp-includes/functions.php

     
    62126212function wp_privacy_anonymize_data( $type, $data = '' ) {
    62136213
    62146214        switch ( $type ) {
    6215                 case 'email':
    6216                         $anonymous = 'deleted@site.invalid';
    6217                         break;
    6218                 case 'url':
    6219                         $anonymous = 'https://site.invalid';
    6220                         break;
    62216215                case 'ip':
    62226216                        $anonymous = wp_privacy_anonymize_ip( $data );
    62236217                        break;
  • tests/phpunit/tests/comment.php

     
    815815        /**
    816816         * The `wp_comments_personal_data_eraser()` function should erase user's comments.
    817817         *
     818         * @group privacy
    818819         * @ticket 43442
    819820         */
    820821        public function test_wp_comments_personal_data_eraser() {
     
    856857                        'comment_ID'           => (string) $comment_id,
    857858                        'user_id'              => '0', // Anonymized.
    858859                        'comment_author'       => 'Anonymous', // Anonymized.
    859                         'comment_author_email' => 'deleted@site.invalid', // Anonymized.
    860                         'comment_author_url'   => 'https://site.invalid', // Anonymized.
     860                        'comment_author_email' => '', // Anonymized.
     861                        'comment_author_url'   => '', // Anonymized.
    861862                        'comment_author_IP'    => '192.168.0.0', // Anonymized.
    862863                        'comment_date'         => '2018-04-14 17:20:00',
    863864                        'comment_date_gmt'     => '2018-04-14 17:20:00',
     
    866867                );
    867868
    868869                $this->assertSame( $expected, $actual );
     870                // Ensure the comment was marked as anonymized in meta.
     871                $this->assertSame( '1', get_comment_meta( $comment_id, '_wp_anonymized', true ) );
    869872        }
    870873
    871874        /**
    872875         * Testing the `wp_comments_personal_data_eraser()` function's output on an empty first page.
    873876         *
     877         * @group privacy
    874878         * @ticket 43442
    875879         */
    876880        public function test_wp_comments_personal_data_eraser_empty_first_page_output() {
     
    889893        /**
    890894         * Testing the `wp_comments_personal_data_eraser()` function's output, for the non-empty first page.
    891895         *
     896         * @group privacy
    892897         * @ticket 43442
    893898         */
    894899        public function test_wp_comments_personal_data_eraser_non_empty_first_page_output() {
     
    920925        /**
    921926         * Testing the `wp_comments_personal_data_eraser()` function's output, for an empty second page.
    922927         *
     928         * @group privacy
    923929         * @ticket 43442
    924930         */
    925931        public function test_wp_comments_personal_data_eraser_empty_second_page_output() {
     
    951957        /**
    952958         * Testing the `wp_anonymize_comment` filter, to prevent comment anonymization.
    953959         *
     960         * @group privacy
    954961         * @ticket 43442
    955962         */
    956963        public function test_wp_anonymize_comment_filter_to_prevent_comment_anonymization() {
     
    987994        /**
    988995         * Testing the `wp_anonymize_comment` filter, to prevent comment anonymization, with a custom message.
    989996         *
     997         * @group privacy
    990998         * @ticket 43442
    991999         */
    9921000        public function test_wp_anonymize_comment_filter_to_prevent_comment_anonymization_with_custom_message() {
  • tests/phpunit/tests/functions/anonymization.php

     
    212212         * Test email anonymization of `wp_privacy_anonymize_data()`.
    213213         */
    214214        public function test_anonymize_email() {
    215                 $this->assertEquals( 'deleted@site.invalid', wp_privacy_anonymize_data( 'email', 'bar@example.com' ) );
     215                $this->assertEquals( '', wp_privacy_anonymize_data( 'email', 'bar@example.com' ) );
    216216        }
    217217
    218218        /**
     
    219219         * Test url anonymization of `wp_privacy_anonymize_data()`.
    220220         */
    221221        public function test_anonymize_url() {
    222                 $this->assertEquals( 'https://site.invalid', wp_privacy_anonymize_data( 'url', 'https://example.com/author/username' ) );
     222                $this->assertEquals( '', wp_privacy_anonymize_data( 'url', 'https://example.com/author/username' ) );
    223223        }
    224224
    225225        /**
     
    244244                $text = __( 'Four score and seven years ago' );
    245245                $this->assertEquals( 'This content was deleted by the author.', wp_privacy_anonymize_data( 'longtext', $text ) );
    246246        }
     247
     248        /**
     249         * Test text anonymization when a filter is added.
     250         *
     251         * @ticket 44141
     252         */
     253        public function test_anonymize_with_filter() {
     254                add_filter( 'wp_privacy_anonymize_data', array( $this, 'filter_wp_privacy_anonymize_data' ), 10, 3 );
     255                $this->assertEquals( '', wp_privacy_anonymize_data( 'email', 'bar@example.com' ) );
     256                $this->assertEquals( 'http://local.host/why-this-was-removed', wp_privacy_anonymize_data( 'url', 'https://example.com/author/username' ) );
     257                remove_all_filters( 'wp_privacy_anonymize_data' );
     258        }
     259
     260        /**
     261         * Change the anonymized value for URLs.
     262         *
     263         * @param string $anonymous Anonymized data.
     264         * @param string $type      Type of the data.
     265         * @param string $data      Original data.
     266         * @return string Anonymized data.
     267         */
     268        public function filter_wp_privacy_anonymize_data( $anonymous, $type, $data ) {
     269                if ( 'url' === $type ) {
     270                        return 'http://local.host/why-this-was-removed';
     271                }
     272
     273                return $anonymous;
     274        }
    247275}