Changeset 10792
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-core/classes/class-bp-email-recipient.php
r10599 r10792 56 56 $name = sanitize_text_field( $name ); 57 57 58 // User ID, WP_User object. 59 if ( is_int( $email_or_user ) || is_object( $email_or_user ) ) { 60 $this->user_object = is_object( $email_or_user ) ? $email_or_user : get_user_by( 'id', $email_or_user ); 58 // User ID, email address or WP_User object. 59 if ( is_int( $email_or_user ) || ( is_string( $email_or_user ) && is_email( $email_or_user ) ) || is_object( $email_or_user ) ) { 60 // We already have a WP user. 61 if ( is_object( $email_or_user ) ) { 62 $this->user_object = $email_or_user; 61 63 62 if ( $this->user_object ) { 63 // This is escaped with esc_html in bp_core_get_user_displayname() 64 $name = wp_specialchars_decode( bp_core_get_user_displayname( $this->user_object->ID ), ENT_QUOTES ); 65 66 $this->address = $this->user_object->user_email; 67 $this->name = sanitize_text_field( $name ); 64 // Query for WP user by user ID. 65 } elseif ( is_int( $email_or_user ) ) { 66 $this->user_object = get_user_by( 'id', $email_or_user ); 68 67 } 69 68 70 // Array, address, and name. 69 // Set email address. 70 if ( empty( $this->user_object ) && is_email( $email_or_user ) ) { 71 $address = $email_or_user; 72 } 73 74 // Array or miscellaneous string. 71 75 } else { 72 76 if ( ! is_array( $email_or_user ) ) { … … 81 85 $name = current( $email_or_user ); 82 86 } 87 } 83 88 84 if ( is_email( $address ) ) { 85 $this->address = sanitize_email( $address ); 86 } 89 // Set address if we have one. 90 if ( ! empty( $address ) ) { 91 $this->address = sanitize_email( $address ); 92 } 87 93 94 // Still no user object; try to query user by email address. 95 if ( empty( $this->user_object ) ) { 96 $this->get_user( 'search-email' ); 97 } 98 99 // We have a user object; so set address and name from DB. 100 if ( $this->user_object ) { 101 // This is escaped with esc_html in bp_core_get_user_displayname() 102 $wp_name = wp_specialchars_decode( bp_core_get_user_displayname( $this->user_object->ID ), ENT_QUOTES ); 103 104 $this->address = $this->user_object->user_email; 105 $this->name = sanitize_text_field( $wp_name ); 106 107 } 108 109 // Custom name override. 110 if ( $name ) { 88 111 $this->name = $name; 89 112 } -
trunk/tests/phpunit/testcases/core/class-bp-email-recipient.php
r10470 r10792 48 48 } 49 49 50 public function test_return_with_ address_and_optional_name() {50 public function test_return_with_known_address_and_optional_name() { 51 51 $email = 'test@example.com'; 52 $name = 'Custom'; 53 $recipient = new BP_Email_Recipient( $email, $name ); 54 55 $this->assertSame( 'test@example.com', $recipient->get_address() ); 56 $this->assertSame( 'Custom', $recipient->get_name() ); 57 } 58 59 public function test_return_with_known_address_and_empty_name() { 60 $email = 'test@example.com'; 61 $recipient = new BP_Email_Recipient( $email ); 62 63 $this->assertSame( 'test@example.com', $recipient->get_address() ); 64 65 // Should fallback to WP user name. 66 $this->assertSame( 'Unit Test', $recipient->get_name() ); 67 } 68 69 public function test_return_with_unknown_address_and_optional_name() { 70 $email = 'unknown@example.com'; 71 $name = 'Custom'; 72 $recipient = new BP_Email_Recipient( $email, $name ); 73 74 $this->assertSame( $email, $recipient->get_address() ); 75 $this->assertSame( $name, $recipient->get_name() ); 76 } 77 78 public function test_return_with_unknown_address_and_empty_name() { 79 $email = 'unknown@example.com'; 52 80 $recipient = new BP_Email_Recipient( $email ); 53 81 … … 56 84 } 57 85 58 public function test_return_with_array_and_optional_name() { 86 public function test_return_with_unknown_array_and_optional_name() { 87 $email = 'unknown@example.com'; 88 $name = 'Custom'; 89 $recipient = new BP_Email_Recipient( array( $email => $name ) ); 90 91 $this->assertSame( $email, $recipient->get_address() ); 92 $this->assertSame( $name, $recipient->get_name() ); 93 } 94 95 public function test_return_with_unknown_array_and_empty_name() { 96 $email = 'unknown@example.com'; 97 $recipient = new BP_Email_Recipient( array( $email ) ); 98 99 $this->assertSame( $email, $recipient->get_address() ); 100 $this->assertEmpty( $recipient->get_name() ); 101 } 102 103 public function test_return_with_known_array_and_optional_name() { 104 $email = 'test@example.com'; 105 $name = 'Custom'; 106 $recipient = new BP_Email_Recipient( array( $email => $name ) ); 107 108 $this->assertSame( $email, $recipient->get_address() ); 109 $this->assertSame( $name, $recipient->get_name() ); 110 } 111 112 public function test_return_with_known_array_and_empty_name() { 59 113 $email = 'test@example.com'; 60 114 $recipient = new BP_Email_Recipient( array( $email ) ); 61 115 62 116 $this->assertSame( $email, $recipient->get_address() ); 63 $this->assertEmpty( $recipient->get_name() ); 117 118 // Should fallback to WP user name. 119 $this->assertSame( 'Unit Test', $recipient->get_name() ); 64 120 } 65 121
Note: See TracChangeset
for help on using the changeset viewer.