Ticket #44212: 44212.2.patch
File 44212.2.patch, 3.3 KB (added by , 5 years ago) |
---|
-
src/wp-includes/functions.php
3652 3652 * @return array Sanitized array of IDs. 3653 3653 */ 3654 3654 function wp_parse_id_list( $list ) { 3655 if ( ! is_array( $list ) ) { 3656 $list = preg_split( '/[\s,]+/', $list ); 3657 } 3658 3659 return array_unique( array_map( 'absint', $list ) ); 3655 return array_unique( array_map( 'absint', wp_parse_list( $list ) ) ); 3660 3656 } 3661 3657 3662 3658 /** … … 3668 3664 * @return array Sanitized array of slugs. 3669 3665 */ 3670 3666 function wp_parse_slug_list( $list ) { 3667 $list = wp_parse_list( $list ); 3668 foreach ( $list as $key => $value ) { 3669 $list[ $key ] = sanitize_title( $value ); 3670 } 3671 3672 return array_unique( $list ); 3673 } 3674 3675 /** 3676 * Clean up an array, comma- or space-separated list. 3677 * 3678 * Duplicate values are filtered out by default. 3679 * Use format 'filter_false' to also filter out all the values that equal to false. 3680 * For example: '', '0', 0, false, null, array() 3681 * 3682 * @since X.X.X 3683 * 3684 * @param array|string $list List. 3685 * @param string $format List format. Accepts 'raw' or 'filter_false'. 3686 * @return array Parsed list. 3687 */ 3688 function wp_parse_list( $list, $format = '' ) { 3671 3689 if ( ! is_array( $list ) ) { 3672 $list = preg_split( '/[\s,]+/', $list );3690 $list = preg_split( '/[\s,]+/', $list, -1, PREG_SPLIT_NO_EMPTY ); 3673 3691 } 3674 3692 3675 foreach ( $list as $key => $value ) { 3676 $list[ $key ] = sanitize_title( $value ); 3693 if ( 'raw' === $format ) { 3694 return $list; 3695 } elseif ( 'filter_false' === $format ) { 3696 $list = array_filter( $list ); 3677 3697 } 3678 3698 3679 3699 return array_unique( $list ); -
tests/phpunit/tests/functions.php
550 550 } 551 551 552 552 /** 553 * @dataProvider data_wp_parse_list_formatted_with_filter_false 554 */ 555 function test_wp_parse_list_formatted_with_filter_false( $expected, $actual ) { 556 $this->assertSame( $expected, array_values( wp_parse_list( $actual, 'filter_false' ) ) ); 557 } 558 559 function data_wp_parse_list_formatted_with_filter_false() { 560 return array( 561 array( array(), array( '', '0', 0, false, null, array() ) ), 562 array( array( '1', '2', '3', '4' ), ' 1,,2 3 ,0 4 2 ' ), 563 ); 564 } 565 566 /** 553 567 * @dataProvider data_wp_parse_id_list 554 568 */ 555 569 function test_wp_parse_id_list( $expected, $actual ) { … … 559 573 function data_wp_parse_id_list() { 560 574 return array( 561 575 array( array( 1, 2, 3, 4 ), '1,2,3,4' ), 576 array( array( 1, 2, 3, 4 ), ' 1,2,3,4' ), 562 577 array( array( 1, 2, 3, 4 ), '1, 2,,3,4' ), 563 578 array( array( 1, 2, 3, 4 ), '1,2,2,3,4' ), 564 579 array( array( 1, 2, 3, 4 ), array( '1', '2', '3', '4', '3' ) ), … … 578 593 function data_wp_parse_slug_list() { 579 594 return array( 580 595 array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple,banana,carrot,dog' ), 596 array( array( 'apple', 'banana', 'carrot', 'dog' ), ' apple,banana,carrot,dog' ), 581 597 array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple, banana,,carrot,dog' ), 582 598 array( array( 'apple', 'banana', 'carrot', 'dog' ), 'apple banana carrot dog' ), 583 599 array( array( 'apple', 'banana-carrot', 'd-o-g' ), array( 'apple ', 'banana carrot', 'd o g' ) ),