[wp-trac] [WordPress Trac] #32544: No function exposes all supported MIME types
WordPress Trac
noreply at wordpress.org
Mon Jun 1 05:17:56 UTC 2015
#32544: No function exposes all supported MIME types
--------------------------+------------------------------
Reporter: dan.rossiter | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Media | Version: 4.2.2
Severity: normal | Resolution:
Keywords: | Focuses:
--------------------------+------------------------------
Description changed by rmccue:
Old description:
> `wp_get_mime_types()` returns the default WP MIME types, and
> `get_allowed_mime_types()` returns the default WP MIME types + added MIME
> types through the `upload_mimes` filter, but the kicker with the latter
> is that it is filtered based on the currently authenticated user.
>
> There needs to be a way to retrieve all MIME types supported, both the
> default and the ones added through the `upload_mimes` filter, regardless
> of who is authenticated.
>
> I understand there are security reasons for not allowing users to *add*
> (or write) attachments of a given MIME type, but when a user is reading
> there needs to be a way to retrieve an unrestricted list of all MIME
> types.
>
> An example use case is below, where all supported MIME types for a
> service are retrieved from its API and then the subset of types that are
> both supported by the WordPress install and the service are kept.
>
> function get_service_mime_types() {
> // the desired function to get un-sanitized MIME types
> $wp_types = wp_get_all_mime_types();
>
> // get intersection of WP / service MIME types
> $allowed = array_intersect($wp_types, get_service_mime_types());
> $allowed = array_keys($allowed);
>
> return $allowed;
> }
>
> As a work-around, I'm currently using the following, but it's flawed --
> if a custom MIME type is added conditionally by user type, it won't be
> included which is not the desired behavior.
>
> `array_merge(wp_get_mime_types(), get_allowed_mime_types())`
New description:
`wp_get_mime_types()` returns the default WP MIME types, and
`get_allowed_mime_types()` returns the default WP MIME types + added MIME
types through the `upload_mimes` filter, but the kicker with the latter is
that it is filtered based on the currently authenticated user.
There needs to be a way to retrieve all MIME types supported, both the
default and the ones added through the `upload_mimes` filter, regardless
of who is authenticated.
I understand there are security reasons for not allowing users to *add*
(or write) attachments of a given MIME type, but when a user is reading
there needs to be a way to retrieve an unrestricted list of all MIME
types.
An example use case is below, where all supported MIME types for a service
are retrieved from its API and then the subset of types that are both
supported by the WordPress install and the service are kept.
{{{
function get_service_mime_types() {
// the desired function to get un-sanitized MIME types
$wp_types = wp_get_all_mime_types();
// get intersection of WP / service MIME types
$allowed = array_intersect($wp_types, get_service_mime_types());
$allowed = array_keys($allowed);
return $allowed;
}
}}}
As a work-around, I'm currently using the following, but it's flawed -- if
a custom MIME type is added conditionally by user type, it won't be
included which is not the desired behavior.
{{{
array_merge(wp_get_mime_types(), get_allowed_mime_types())
}}}
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/32544#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list