Ticket #41905: 41905.2.patch
File 41905.2.patch, 5.4 KB (added by , 7 years ago) |
---|
-
src/wp-includes/feed.php
diff --git src/wp-includes/feed.php src/wp-includes/feed.php index dbeb3a0..fc885bf 100644
function html_type_rss() { 449 449 * the user has the password for the post. If not then it will return before 450 450 * displaying. 451 451 * 452 * Also uses the function get_post_ custom() to get the post's 'enclosure'452 * Also uses the function get_post_meta() to get the post's 'enclosure' 453 453 * metadata field and parses the value to display the enclosure(s). The 454 454 * enclosure(s) consist of enclosure HTML tag(s) with a URI and other 455 455 * attributes. … … function rss_enclosure() { 460 460 if ( post_password_required() ) 461 461 return; 462 462 463 foreach ( (array) get_post_custom() as $key => $val) {464 if ($key == 'enclosure') { 465 foreach ( (array) $val as $enc ) {466 $enclosure = explode("\n", $enc);467 468 // only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3' 469 $t = preg_split('/[ \t]/', trim($enclosure[2]) );470 $type = $t[0];471 472 /** 473 * Filters the RSS enclosure HTML link tag for the current post.474 *475 * @since 2.2.0476 *477 * @param string $html_link_tag The HTML link tag with a URI and other attributes.478 */479 echo apply_filters( 'rss_enclosure', '<enclosure url="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" length="' . trim( $enclosure[1] ) . '" type="' . $type . '" />' . "\n" );480 }463 $meta_enclosures = get_post_meta( get_the_ID(), 'enclosure', false ); 464 465 foreach ( (array) $meta_enclosures as $key => $val ){ 466 foreach ( (array) $val as $enc ) { 467 $enclosure = explode("\n", $enc); 468 469 // only get the first element, e.g. audio/mpeg from 'audio/mpeg mpga mp2 mp3' 470 $t = preg_split('/[ \t]/', trim($enclosure[2]) ); 471 $type = $t[0]; 472 473 /** 474 * Filters the RSS enclosure HTML link tag for the current post. 475 * 476 * @since 2.2.0 477 * 478 * @param string $html_link_tag The HTML link tag with a URI and other attributes. 479 */ 480 echo apply_filters( 'rss_enclosure', '<enclosure url="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" length="' . trim( $enclosure[1] ) . '" type="' . $type . '" />' . "\n" ); 481 481 } 482 482 } 483 483 } … … function rss_enclosure() { 489 489 * the user has the password for the post. If not then it will return before 490 490 * displaying. 491 491 * 492 * Also uses the function get_post_ custom() to get the post's 'enclosure'492 * Also uses the function get_post_meta() to get the post's 'enclosure' 493 493 * metadata field and parses the value to display the enclosure(s). The 494 494 * enclosure(s) consist of link HTML tag(s) with a URI and other attributes. 495 495 * … … function atom_enclosure() { 499 499 if ( post_password_required() ) 500 500 return; 501 501 502 foreach ( (array) get_post_custom() as $key => $val ) {503 if ($key == 'enclosure') { 504 foreach ( (array) $val as $enc ) {505 $enclosure = explode("\n", $enc);506 /**507 * Filters the atom enclosure HTML link tag for the current post.508 *509 * @since 2.2.0510 *511 * @param string $html_link_tag The HTML link tag with a URI and other attributes.512 */513 echo apply_filters( 'atom_enclosure', '<link href="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" rel="enclosure" length="' . trim( $enclosure[1] ) . '" type="' . trim( $enclosure[2] ) . '" />' . "\n" );514 }502 $meta_enclosures = get_post_meta( get_the_ID(), 'enclosure', false ); 503 504 foreach ( (array) $meta_enclosures as $key => $val ){ 505 foreach ( (array) $val as $enc ) { 506 $enclosure = explode("\n", $enc); 507 /** 508 * Filters the atom enclosure HTML link tag for the current post. 509 * 510 * @since 2.2.0 511 * 512 * @param string $html_link_tag The HTML link tag with a URI and other attributes. 513 */ 514 echo apply_filters( 'atom_enclosure', '<link href="' . trim( htmlspecialchars( $enclosure[0] ) ) . '" rel="enclosure" length="' . trim( $enclosure[1] ) . '" type="' . trim( $enclosure[2] ) . '" />' . "\n" ); 515 515 } 516 516 } 517 517 } -
tests/phpunit/tests/feed/atom.php
diff --git tests/phpunit/tests/feed/atom.php tests/phpunit/tests/feed/atom.php index fbe064b..e99c999 100644
class Tests_Feeds_Atom extends WP_UnitTestCase { 197 197 } 198 198 } 199 199 } 200 201 /** 202 * @ticket 41905 203 */ 204 function test_atom_and_rss_enclosures() { 205 206 $meta_enclosures = array( 207 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 208 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 209 ); 210 211 $expected = array( 212 '<link href="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" rel="enclosure" length="318465" type="video/mp4" />', 213 '<link href="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" rel="enclosure" length="48934" type="audio/mpeg" />', 214 ); 215 216 // Latest post ID 217 $post_id = end( self::$posts ); 218 219 // Add enclosure meta 220 foreach( $meta_enclosures as $meta_enclosure ) { 221 add_post_meta( $post_id, 'enclosure', $meta_enclosure ); 222 } 223 224 $old_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null; 225 $GLOBALS['post'] = get_post( $post_id ); 226 227 // Atom enclosure 228 ob_start(); 229 atom_enclosure(); 230 $this->assertSame( ob_get_clean(), join( '', $expected ) ); 231 232 // RSS enclosure 233 ob_start(); 234 rss_enclosure(); 235 $this->assertSame( ob_get_clean(), join( '', $expected ) ); 236 237 // Cleanup 238 if( is_null( $old_post ) ) 239 unset( $GLOBALS['post'] ); 240 else 241 $GLOBALS['post'] = $old_post; 242 243 } 244 200 245 }