Ticket #6966: 6966.01.patch
File 6966.01.patch, 2.8 KB (added by , 9 years ago) |
---|
-
src/bp-core/bp-core-filters.php
59 59 add_filter( 'bp_email_set_content_plaintext', 'wp_strip_all_tags', 6 ); 60 60 add_filter( 'bp_email_set_subject', 'sanitize_text_field', 6 ); 61 61 62 63 62 /** 64 63 * Template Compatibility. 65 64 * … … 353 352 * 354 353 * @since 2.5.0 355 354 * 356 * @param string $retval Current email content. 357 * @param string $prop Email property to check against. 355 * @param string $retval Current email content. 356 * @param string $prop Email property to check against. 357 * @param string $transform Either 'raw' or 'replace-tokens'. 358 358 */ 359 function bp_email_plaintext_entity_decode( $retval, $prop ) { 360 if ( 'content_plaintext' !== $prop ) { 361 return $retval; 362 } 359 function bp_email_plaintext_entity_decode( $retval, $prop, $transform ) { 360 switch ( $prop ) { 361 case 'content_plaintext' : 362 case 'subject' : 363 // Only decode if 'replace-tokens' is the current type. 364 if ( 'replace-tokens' === $transform ) { 365 return html_entity_decode( $retval, ENT_QUOTES ); 366 } else { 367 return $retval; 368 } 369 break; 363 370 364 return html_entity_decode( $retval, ENT_QUOTES ); 371 default : 372 return $retval; 373 break; 374 } 365 375 } 366 add_filter( 'bp_email_get_property', 'bp_email_plaintext_entity_decode', 10, 2);376 add_filter( 'bp_email_get_property', 'bp_email_plaintext_entity_decode', 10, 3 ); 367 377 368 378 /** 369 379 * Replace the generated password in the welcome email with '[User Set]'. -
tests/phpunit/testcases/core/class-bp-email.php
267 267 268 268 $this->assertTrue( $result ); 269 269 } 270 271 public function test_html_entities_are_decoded_in_email_subject() { 272 // Emulate custom post title for an email post type. 273 $subject = "It's pretty <new & magical."; 274 275 $email = new BP_Email( 'activity-at-message' ); 276 $email->set_subject( $subject )->set_tokens( array( 'poster.name' => 'blah' ) ); 277 278 // Subject always has to have tokens replaced before sending. 279 $this->assertSame( $subject, $email->get_subject( 'replace-tokens' ) ); 280 } 281 282 public function test_html_entities_are_decoded_in_email_recipient_names() { 283 // Raw display name. 284 $name = "Test o'Toole"; 285 286 // Emulate rendered {poster.name} token. 287 $token = apply_filters( 'bp_core_get_user_displayname', $name ); 288 289 $email = new BP_Email( 'activity-at-message' ); 290 $email->set_subject( '{{poster.name}}' )->set_tokens( array( 'poster.name' => $token ) ); 291 292 // Subject always has to have tokens replaced before sending. 293 $this->assertSame( $name, $email->get_subject( 'replace-tokens' ) ); 294 } 295 270 296 }