Improve the handling of comma-separated mime-types in wp_match_mime_types(), particularly as pertains to the mime-type selector on the Media list table screen.

Props mdgl.
Fixes #30788.


git-svn-id: https://develop.svn.wordpress.org/trunk@31042 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2015-01-04 02:31:29 +00:00
parent efc61d054e
commit 621e909a9b
2 changed files with 9 additions and 6 deletions

View File

@ -75,7 +75,7 @@ class WP_Media_List_Table extends WP_List_Table {
if ( !empty( $_GET['attachment-filter'] ) && strpos( $_GET['attachment-filter'], 'post_mime_type:' ) === 0 && wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $_GET['attachment-filter'] ) ) ) if ( !empty( $_GET['attachment-filter'] ) && strpos( $_GET['attachment-filter'], 'post_mime_type:' ) === 0 && wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $_GET['attachment-filter'] ) ) )
$selected = ' selected="selected"'; $selected = ' selected="selected"';
if ( !empty( $num_posts[$mime_type] ) ) if ( !empty( $num_posts[$mime_type] ) )
$type_links[$mime_type] = '<option value="post_mime_type:' . sanitize_mime_type( $mime_type ) . '"' . $selected . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</option>'; $type_links[$mime_type] = '<option value="post_mime_type:' . esc_attr( $mime_type ) . '"' . $selected . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</option>';
} }
$type_links['detached'] = '<option value="detached"' . ( $this->detached ? ' selected="selected"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . '</option>'; $type_links['detached'] = '<option value="detached"' . ( $this->detached ? ' selected="selected"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . '</option>';

View File

@ -2478,11 +2478,14 @@ function wp_match_mime_types( $wildcard_mime_types, $real_mime_types ) {
$wild = '[-._a-z0-9]*'; $wild = '[-._a-z0-9]*';
foreach ( (array) $wildcard_mime_types as $type ) { foreach ( (array) $wildcard_mime_types as $type ) {
$regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $type ) ) ); $mimes = array_map( 'trim', explode( ',', $type ) );
$patternses[1][$type] = "^$regex$"; foreach ( $mimes as $mime ) {
if ( false === strpos($type, '/') ) { $regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $mime ) ) );
$patternses[2][$type] = "^$regex/"; $patternses[][$type] = "^$regex$";
$patternses[3][$type] = $regex; if ( false === strpos( $mime, '/' ) ) {
$patternses[][$type] = "^$regex/";
$patternses[][$type] = $regex;
}
} }
} }
asort( $patternses ); asort( $patternses );