Ticket #41905: 41905.5.patch
File 41905.5.patch, 6.7 KB (added by , 7 years ago) |
---|
-
src/wp-includes/feed.php
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. … … 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); 463 $meta_enclosures = get_post_meta( get_the_ID(), 'enclosure', false ); 467 464 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];465 foreach ( (array) $meta_enclosures as $key => $val ){ 466 foreach ( (array) $val as $enc ) { 467 $enclosure = explode("\n", $enc); 471 468 472 /** 473 * Filters the RSS enclosure HTML link tag for the current post. 474 * 475 * @since 2.2.0 476 * 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 } 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 } … … 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 * … … 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
197 197 } 198 198 } 199 199 } 200 201 /** 202 * Tests atom_enclosures() 203 * 204 * @ticket 41905 205 * @param $meta_enclosure 206 * @param $expect 207 * 208 * @dataProvider data_test_atom_enclosures 209 */ 210 function test_atom_enclosures($meta_enclosure, $expect) { 211 // Latest post ID 212 $post_id = end( self::$posts ); 213 214 // Add enclosure meta 215 add_post_meta( $post_id, 'enclosure', $meta_enclosure ); 216 217 // Setup global post object used by atom_enclosure() 218 $GLOBALS['post'] = get_post( $post_id ); 219 220 // Atom enclosure and test 221 atom_enclosure(); 222 $this->expectOutputString( $expect ); 223 224 unset( $GLOBALS['post'] ); 225 } 226 227 public static function data_test_atom_enclosures() { 228 return array( 229 array( 230 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 231 '<link href="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" rel="enclosure" length="318465" type="video/mp4" />' . "\n", 232 ), 233 array( 234 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 235 '<link href="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" rel="enclosure" length="48934" type="audio/mpeg" />' . "\n", 236 ), 237 ); 238 } 239 200 240 } -
tests/phpunit/tests/feed/rss2.php
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 * @param $meta_enclosure 463 * @param $expect 464 * 465 * @dataProvider data_test_rss_enclosures 466 */ 467 function test_rss_enclosures($meta_enclosure, $expect) { 468 // Latest post ID 469 $post_id = end( self::$posts ); 470 471 // Add enclosure meta 472 add_post_meta( $post_id, 'enclosure', $meta_enclosure ); 473 474 // Setup global post object used by rss_enclosure() 475 $GLOBALS['post'] = get_post( $post_id ); 476 477 // RSS enclosure and test 478 rss_enclosure(); 479 $this->expectOutputString( $expect ); 480 481 // Cleanup 482 unset( $GLOBALS['post'] ); 483 } 484 485 public static function data_test_rss_enclosures() { 486 return array( 487 array( 488 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 489 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" length="318465" type="video/mp4" />' . "\n", 490 ), 491 array( 492 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 493 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" length="48934" type="audio/mpeg" />' . "\n", 494 ), 495 ); 496 } 457 497 }