Ticket #41905: 41905.3.diff
File 41905.3.diff, 6.6 KB (added by , 7 years ago) |
---|
-
src/wp-includes/feed.php
diff --git src/wp-includes/feed.php src/wp-includes/feed.php index 731b66e..1a48792 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.0 510 * 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 foreach ( (array) $meta_enclosures as $key => $val ) { 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.0 510 * 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" ); 515 514 } 516 515 } 517 516 } -
tests/phpunit/tests/feed/atom.php
diff --git tests/phpunit/tests/feed/atom.php tests/phpunit/tests/feed/atom.php index fbe064b..8f04a90 100644
class Tests_Feeds_Atom extends WP_UnitTestCase { 197 197 } 198 198 } 199 199 } 200 201 /** 202 * Tests atom_enclosures(). 203 * 204 * @ticket 41905 205 */ 206 public function test_atom_enclosures() { 207 // Latest post ID. 208 $post_id = end( self::$posts ); 209 210 // Add enclosure meta. 211 $meta_enclosures = array( 212 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 213 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 214 ); 215 foreach ( $meta_enclosures as $meta_enclosure ) { 216 add_post_meta( $post_id, 'enclosure', $meta_enclosure, false ); 217 } 218 219 // Setup global post object used by atom_enclosure(). 220 $GLOBALS['post'] = get_post( $post_id ); 221 222 // Actual output. 223 atom_enclosure(); 224 225 // Cleanup. 226 unset( $GLOBALS['post'] ); 227 228 // Expected output. 229 $expected = join( '', array( 230 '<link href="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" rel="enclosure" length="318465" type="video/mp4" />' . "\n", 231 '<link href="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" rel="enclosure" length="48934" type="audio/mpeg" />' . "\n", 232 ) ); 233 $this->expectOutputString( $expected ); 234 } 200 235 } -
tests/phpunit/tests/feed/rss2.php
diff --git tests/phpunit/tests/feed/rss2.php tests/phpunit/tests/feed/rss2.php index f0d7919..8323b29 100644
class Tests_Feeds_RSS2 extends WP_UnitTestCase { 454 454 // There should only be one <rss> child element. 455 455 $this->assertEquals( 1, count( $rss ) ); 456 456 } 457 458 /** 459 * Tests rss_enclosures(). 460 * 461 * @ticket 41905 462 */ 463 public function test_rss_enclosures() { 464 // Latest post ID. 465 $post_id = end( self::$posts ); 466 467 // Add enclosure meta. 468 $meta_enclosures = array( 469 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 470 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 471 ); 472 foreach ( $meta_enclosures as $meta_enclosure ) { 473 add_post_meta( $post_id, 'enclosure', $meta_enclosure, false ); 474 } 475 476 // Setup global post object used by rss_enclosure(). 477 $GLOBALS['post'] = get_post( $post_id ); 478 479 // Actual output. 480 rss_enclosure(); 481 482 // Cleanup. 483 unset( $GLOBALS['post'] ); 484 485 // Expected output. 486 $expected = join( '', array( 487 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" length="318465" type="video/mp4" />' . "\n", 488 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" length="48934" type="audio/mpeg" />' . "\n", 489 ) ); 490 $this->expectOutputString( $expected ); 491 } 457 492 }