WordPress.org

Make WordPress Core

Ticket #30647: 30647.2.diff

File 30647.2.diff, 2.2 KB (added by DrewAPicture, 6 years ago)
  • src/wp-includes/user.php

     
    17991799         */
    18001800        $user_email = apply_filters( 'pre_user_email', $raw_user_email );
    18011801
    1802         if ( ! $update && ! defined( 'WP_IMPORTING' ) && email_exists( $user_email ) ) {
     1802        /*
     1803         * If there is no update just check for email_exists and if there is update,
     1804         * check if current email and new email are same or not and check email_exists
     1805         * accordingly.
     1806         */
     1807        if ( ( ! $update || ( ! empty( $old_user_data ) && $user_email !== $old_user_data->user_email ) )
     1808                && ! defined( 'WP_IMPORTING' )
     1809                && email_exists( $user_email )
     1810        ) {
    18031811                return new WP_Error( 'existing_user_email', __( 'Sorry, that email address is already used!' ) );
    18041812        }
    18051813        $nickname = empty( $userdata['nickname'] ) ? $user_login : $userdata['nickname'];
  • tests/phpunit/tests/user.php

     
    619619        }
    620620
    621621        /**
     622         * @ticket 30647
     623         */
     624        function test_user_update_email_error() {
     625                $id1 = wp_insert_user( array(
     626                        'user_login' => rand_str(),
     627                        'user_pass'  => 'password',
     628                        'user_email' => 'blackburn@battlefield3.com',
     629                ) );
     630                $this->assertEquals( $id1, email_exists( 'blackburn@battlefield3.com' ) );
     631
     632                $id2 = wp_insert_user( array(
     633                        'user_login' => rand_str(),
     634                        'user_pass'  => 'password',
     635                        'user_email' => 'miller@battlefield3.com',
     636                ) );
     637                $this->assertEquals( $id2, email_exists( 'miller@battlefield3.com' ) );
     638
     639                if( ! is_wp_error( $id2 ) ){   
     640                        $return = wp_update_user( array(
     641                                'ID'         => $id2,
     642                                'user_email' => 'david@battlefield3.com',
     643                        ) );
     644                        $this->assertEquals( $id2, email_exists( 'david@battlefield3.com' ) );
     645
     646                        $return = wp_update_user( array(
     647                                'ID'         => $id2,
     648                                'user_email' => 'blackburn@battlefield3.com',
     649                        ) );
     650                        if ( ! defined( 'WP_IMPORTING' ) ) {
     651                                $this->assertWPError( $return );
     652                        }                       
     653                }
     654        }
     655
     656        /**
    622657         * @ticket 29696
    623658         */
    624659        public function test_wp_insert_user_should_sanitize_user_nicename_parameter() {