diff --git a/includes/mime_detect.inc b/includes/mime_detect.inc index d6998008..13b66cc8 100644 --- a/includes/mime_detect.inc +++ b/includes/mime_detect.inc @@ -372,4 +372,14 @@ class MimeDetect { return $out; } + /** + * Gets MIME type array. + * + * @return array + * Returns associative array with exts and mimetypes. + */ + public function getMimeTypes() { + return $this->protectedMimeTypes; + } + } diff --git a/islandora.module b/islandora.module index 974d526e..d6c89e99 100644 --- a/islandora.module +++ b/islandora.module @@ -1109,3 +1109,20 @@ function islandora_download_clip(AbstractObject $object) { } exit(); } + +/** + * Implements hook_file_mimetype_mapping_alter(). + * + * Grab custom islandora mime type list + * and add any missing ext/mimes to the drupal mapping + */ +function islandora_file_mimetype_mapping_alter(&$mapping) { + $mime_detect = new MimeDetect(); + $types = $mime_detect->getMimeTypes(); + $diff = array_diff_key($types, $mapping['extensions']); + foreach ($diff as $ext => $mime) { + $mapping['mimetypes'][] = $mime; + end($mapping['mimetypes']); + $mapping['extensions'][$ext] = key($mapping['mimetypes']); + } +}