- Make mime type detection based on filename extension to be case-insensitive

pull/1/head
alecpl 13 years ago
parent fd43a92b5d
commit 4391a7809e

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Make mime type detection based on filename extension to be case-insensitive
- Fix failure on MySQL database upgrade from 0.7 - text column can't have default value (#1488300) - Fix failure on MySQL database upgrade from 0.7 - text column can't have default value (#1488300)
- Added address book widget on compose screen - Added address book widget on compose screen
- Use proper timezones from PHP's internal timezonedb (#1485592) - Use proper timezones from PHP's internal timezonedb (#1485592)

@ -1627,12 +1627,14 @@ function rcmail_filetype2classname($mimetype, $filename)
list($primary, $secondary) = explode('/', $mimetype); list($primary, $secondary) = explode('/', $mimetype);
$classes = array($primary ? $primary : 'unknown'); $classes = array($primary ? $primary : 'unknown');
if ($secondary) if ($secondary) {
$classes[] = $secondary; $classes[] = $secondary;
if (preg_match('/\.([a-z0-9]+)$/', $filename, $m)) }
if (preg_match('/\.([a-z0-9]+)$/i', $filename, $m)) {
$classes[] = $m[1]; $classes[] = $m[1];
}
return join(" ", $classes); return strtolower(join(" ", $classes));
} }
/** /**

@ -362,12 +362,14 @@ function rc_mime_content_type($path, $name, $failover = 'application/octet-strea
$mime_type = null; $mime_type = null;
$mime_magic = rcmail::get_instance()->config->get('mime_magic'); $mime_magic = rcmail::get_instance()->config->get('mime_magic');
$mime_ext = @include(RCMAIL_CONFIG_DIR . '/mimetypes.php'); $mime_ext = @include(RCMAIL_CONFIG_DIR . '/mimetypes.php');
$suffix = $name ? substr($name, strrpos($name, '.')+1) : '*';
// use file name suffix with hard-coded mime-type map // use file name suffix with hard-coded mime-type map
if (is_array($mime_ext)) { if (is_array($mime_ext) && $name) {
$mime_type = $mime_ext[$suffix]; if ($suffix = substr($name, strrpos($name, '.')+1)) {
$mime_type = $mime_ext[strtolower($suffix)];
} }
}
// try fileinfo extension if available // try fileinfo extension if available
if (!$mime_type && function_exists('finfo_open')) { if (!$mime_type && function_exists('finfo_open')) {
if ($finfo = finfo_open(FILEINFO_MIME, $mime_magic)) { if ($finfo = finfo_open(FILEINFO_MIME, $mime_magic)) {
@ -378,10 +380,12 @@ function rc_mime_content_type($path, $name, $failover = 'application/octet-strea
finfo_close($finfo); finfo_close($finfo);
} }
} }
// try PHP's mime_content_type // try PHP's mime_content_type
if (!$mime_type && !$is_stream && function_exists('mime_content_type')) { if (!$mime_type && !$is_stream && function_exists('mime_content_type')) {
$mime_type = @mime_content_type($path); $mime_type = @mime_content_type($path);
} }
// fall back to user-submitted string // fall back to user-submitted string
if (!$mime_type) { if (!$mime_type) {
$mime_type = $failover; $mime_type = $failover;

Loading…
Cancel
Save