Ticket #41905: 41905.4.patch
File 41905.4.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 221 ob_start(); 222 atom_enclosure(); 223 $this->assertEquals( ob_get_clean(), $expect ); 224 225 unset( $GLOBALS['post'] ); 226 } 227 228 public static function data_test_atom_enclosures() { 229 return array( 230 array( 231 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 232 '<link href="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" rel="enclosure" length="318465" type="video/mp4" />' . "\n", 233 ), 234 array( 235 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 236 '<link href="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" rel="enclosure" length="48934" type="audio/mpeg" />' . "\n", 237 ), 238 ); 239 } 240 200 241 } -
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 478 ob_start(); 479 rss_enclosure(); 480 $this->assertEquals( ob_get_clean(), $expect ); 481 482 // Cleanup 483 unset( $GLOBALS['post'] ); 484 } 485 486 public static function data_test_rss_enclosures() { 487 return array( 488 array( 489 "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4", 490 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4" length="318465" type="video/mp4" />' . "\n", 491 ), 492 array( 493 "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n48934\naudio/mpeg", 494 '<enclosure url="https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3" length="48934" type="audio/mpeg" />' . "\n", 495 ), 496 ); 497 } 457 498 }