Fix parsing in `wp_match_mime_types()` to allow some mime-types with `+` in them to appear in the list of filter links shown above the list table on `upload.php`.
Props _duck. Fixes #20672. Built from https://develop.svn.wordpress.org/trunk@28553 git-svn-id: http://core.svn.wordpress.org/trunk@28379 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
e0a57ed96a
commit
8d4d645629
|
@ -64,7 +64,7 @@ class WP_Media_List_Table extends WP_List_Table {
|
|||
if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
|
||||
$class = ' class="current"';
|
||||
if ( !empty( $num_posts[$mime_type] ) )
|
||||
$type_links[$mime_type] = "<a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</a>';
|
||||
$type_links[$mime_type] = '<a href="upload.php?post_mime_type=' . urlencode( $mime_type ) . '"' . $class . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</a>';
|
||||
}
|
||||
$type_links['detached'] = '<a href="upload.php?detached=1"' . ( $this->detached ? ' class="current"' : '' ) . '>' . sprintf( _nx( 'Unattached <span class="count">(%s)</span>', 'Unattached <span class="count">(%s)</span>', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . '</a>';
|
||||
|
||||
|
|
|
@ -2329,27 +2329,37 @@ function get_post_mime_types() {
|
|||
* @param string|array $real_mime_types post_mime_type values
|
||||
* @return array array(wildcard=>array(real types))
|
||||
*/
|
||||
function wp_match_mime_types($wildcard_mime_types, $real_mime_types) {
|
||||
function wp_match_mime_types( $wildcard_mime_types, $real_mime_types ) {
|
||||
$matches = array();
|
||||
if ( is_string($wildcard_mime_types) )
|
||||
$wildcard_mime_types = array_map('trim', explode(',', $wildcard_mime_types));
|
||||
if ( is_string($real_mime_types) )
|
||||
$real_mime_types = array_map('trim', explode(',', $real_mime_types));
|
||||
if ( is_string( $wildcard_mime_types ) ) {
|
||||
$wildcard_mime_types = array_map( 'trim', explode( ',', $wildcard_mime_types ) );
|
||||
}
|
||||
if ( is_string( $real_mime_types ) ) {
|
||||
$real_mime_types = array_map( 'trim', explode( ',', $real_mime_types ) );
|
||||
}
|
||||
|
||||
$patternses = array();
|
||||
$wild = '[-._a-z0-9]*';
|
||||
|
||||
foreach ( (array) $wildcard_mime_types as $type ) {
|
||||
$type = str_replace('*', $wild, $type);
|
||||
$patternses[1][$type] = "^$type$";
|
||||
$regex = str_replace( '__wildcard__', $wild, preg_quote( str_replace( '*', '__wildcard__', $type ) ) );
|
||||
$patternses[1][$type] = "^$regex$";
|
||||
if ( false === strpos($type, '/') ) {
|
||||
$patternses[2][$type] = "^$type/";
|
||||
$patternses[3][$type] = $type;
|
||||
$patternses[2][$type] = "^$regex/";
|
||||
$patternses[3][$type] = $regex;
|
||||
}
|
||||
}
|
||||
asort($patternses);
|
||||
foreach ( $patternses as $patterns )
|
||||
foreach ( $patterns as $type => $pattern )
|
||||
foreach ( (array) $real_mime_types as $real )
|
||||
if ( preg_match("#$pattern#", $real) && ( empty($matches[$type]) || false === array_search($real, $matches[$type]) ) )
|
||||
asort( $patternses );
|
||||
|
||||
foreach ( $patternses as $patterns ) {
|
||||
foreach ( $patterns as $type => $pattern ) {
|
||||
foreach ( (array) $real_mime_types as $real ) {
|
||||
if ( preg_match( "#$pattern#", $real ) && ( empty( $matches[$type] ) || false === array_search( $real, $matches[$type] ) ) ) {
|
||||
$matches[$type][] = $real;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $matches;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue