Make WordPress Core

Ticket #33654: 33654.4.diff

File 33654.4.diff, 7.6 KB (added by adamsilverstein, 9 years ago)
  • src/wp-admin/includes/user.php

     
    176176                $user_id = wp_update_user( $user );
    177177        } else {
    178178                $user_id = wp_insert_user( $user );
    179                 wp_new_user_notification( $user_id, 'both' );
     179                wp_new_user_notification( $user_id, null, 'both' );
    180180        }
    181181        return $user_id;
    182182}
  • src/wp-admin/js/common.js

     
    7373$(document).ready(function(){columns.init();});
    7474
    7575validateForm = function( form ) {
    76         return !$( form )
     76        return ! $( form )
    7777                .find( '.form-required' )
    7878                .filter( function() { return $( 'input:visible', this ).val() === ''; } )
    7979                .addClass( 'form-invalid' )
  • src/wp-admin/network/site-new.php

     
    9494                if ( false === $user_id )
    9595                        wp_die( __( 'There was an error creating the user.' ) );
    9696                else
    97                         wp_new_user_notification( $user_id, 'both' );
     97                        wp_new_user_notification( $user_id, null, 'both' );
    9898        }
    9999
    100100        $wpdb->hide_errors();
  • src/wp-admin/network/site-users.php

     
    7777                                if ( false === $user_id ) {
    7878                                        $update = 'err_new_dup';
    7979                                } else {
    80                                         wp_new_user_notification( $user_id, 'both' );
     80                                        wp_new_user_notification( $user_id, null, 'both' );
    8181                                        add_user_to_blog( $id, $user_id, $_POST['new_role'] );
    8282                                        $update = 'newuser';
    8383                                }
  • src/wp-admin/network/user-new.php

     
    5151                if ( ! $user_id ) {
    5252                        $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) );
    5353                } else {
    54                         wp_new_user_notification( $user_id, 'both' );
     54                        wp_new_user_notification( $user_id, null, 'both' );
    5555                        wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) );
    5656                        exit;
    5757                }
  • src/wp-includes/pluggable.php

     
    16901690 *
    16911691 * @since 2.0.0
    16921692 * @since 4.3.0 The `$plaintext_pass` parameter was changed to `$notify`.
     1693 * @since 4.3.1 The `$plaintext_pass` deprecated. `$notify` added as a third argument.
    16931694 *
    16941695 * @param int    $user_id User ID.
     1696 * @param null   $deprecated Not used (argument deprecated).
    16951697 * @param string $notify  Optional. Type of notification that should happen. Accepts 'admin' or an empty
    16961698 *                        string (admin only), or 'both' (admin and user). The empty string value was kept
    16971699 *                        for backward-compatibility purposes with the renamed parameter. Default empty.
    16981700 */
    1699 function wp_new_user_notification( $user_id, $notify = '' ) {
     1701function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
     1702        if ( $deprecated !== null ) {
     1703                _deprecated_argument( __FUNCTION__, '4.3.1' );
     1704        }
     1705
    17001706        global $wpdb;
    17011707        $user = get_userdata( $user_id );
    17021708
  • src/wp-includes/user-functions.php

     
    20042004
    20052005        update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag.
    20062006
    2007         wp_new_user_notification( $user_id, 'both' );
     2007        wp_new_user_notification( $user_id, null, 'both' );
    20082008
    20092009        return $user_id;
    20102010}
  • tests/phpunit/tests/user.php

     
    679679                $this->assertEquals( $user->user_email, 'test2@test.com' );
    680680        }
    681681
     682        /**
     683         * Testing wp_new_user_notification email statuses.
     684         *
     685         * Be sure when writing tests to unset any old instances of
     686         * $GLOBALS['phpmailer'] or depending on array indices will be
     687         * inaccurate.
     688         *
     689         * @dataProvider data_wp_new_user_notifications
     690         *
     691         * @ticket 33654
     692         *
     693         *
     694         */
     695        function test_wp_new_user_notification( $notify, $admin_email_sent_expected, $user_email_sent_expected ) {
     696
     697                //unset any old instance of phpmailer
     698                unset( $GLOBALS['phpmailer']->mock_sent );
     699
     700                $was_admin_email_sent = false;
     701                $was_user_email_sent = false;
     702
     703                $user = $this->factory->user->create( $this->user_data );
     704
     705                wp_new_user_notification( $user, null, $notify );
     706
     707                /**
     708                 * Check to see if a notification email was sent to the
     709                 * post author `blackburn@battlefield3.com` and and site admin `admin@example.org`.
     710                 */
     711                if ( isset( $GLOBALS['phpmailer']->mock_sent ) && ! empty( $GLOBALS['phpmailer']->mock_sent ) ) {
     712                        $was_admin_email_sent = ( isset( $GLOBALS['phpmailer']->mock_sent[0] ) && 'admin@example.org' == $GLOBALS['phpmailer']->mock_sent[0]['to'][0][0] ) ? true : false;
     713                        $was_user_email_sent = ( isset( $GLOBALS['phpmailer']->mock_sent[1] ) && 'blackburn@battlefield3.com' == $GLOBALS['phpmailer']->mock_sent[1]['to'][0][0] ) ? true : false;
     714                }
     715
     716                $this->assertSame( $admin_email_sent_expected, $was_admin_email_sent, 'Admin email result was not as expected in test_wp_new_user_notification' );
     717                $this->assertSame( $user_email_sent_expected , $was_user_email_sent, 'User email result was not as expected in test_wp_new_user_notification' );
     718        }
     719
     720        /**
     721         * Data provider.
     722         *
     723         * Passes the three available options for the $notify parameter and the expected email
     724         * emails sent status as a bool.
     725         *
     726         * @since 4.4.0
     727         *
     728         * @return array {
     729         *     @type array {
     730         *         @type string $post_args               The arguments that will merged with the $_POST array.
     731         *         @type bool $admin_email_sent_expected The expected result of whether an email was sent to the admin.
     732         *         @type bool $user_email_sent_expected  The expected result of whether an email was sent to the user.
     733         *     }
     734         * }
     735         */
     736        function data_wp_new_user_notifications() {
     737
     738                return array(
     739                        array(
     740                                '',
     741                                true,
     742                                false,
     743                        ),
     744                        array(
     745                                'admin',
     746                                true,
     747                                false,
     748                        ),
     749                        array(
     750                                'both',
     751                                true,
     752                                true,
     753                        ),
     754                );
     755        }
     756
     757        /**
     758         * @ticket 33654
     759         * @expectedDeprecated wp_new_user_notification
     760         */
     761        function test_wp_new_user_notification_old_signature_throws_deprecated_warning() {
     762
     763                $this->deprecated_called = false;
     764
     765                /**
     766                 * Catch if the_deprecated_argument is called.
     767                 */
     768                add_action(
     769                        'deprecated_argument_run',
     770                        function( $message, $version ) {
     771                                $this->deprecated_called = 'wp_new_user_notification' === $message;
     772                        },
     773                        10,
     774                        2
     775                );
     776
     777                /**
     778                 * Set up a user and try sending a notification using the old, deprecated
     779                 * function signature `wp_new_user_notification( $user, 'plaintext_password' );`
     780                 */
     781                $user = $this->factory->user->create(
     782                        array(
     783                                'role'       => 'author',
     784                                'user_login' => 'test_wp_new_user_notification',
     785                                'user_pass'  => 'password',
     786                                'user_email' => 'test@test.com',
     787                        )
     788                );
     789
     790                wp_new_user_notification( $user, 'this_is_deprecated' );
     791
     792        $this->assertTrue( $this->deprecated_called );
     793        }
    682794}