diff --git a/includes/add_datastream.form.inc b/includes/add_datastream.form.inc index 40e1537d..4484a903 100644 --- a/includes/add_datastream.form.inc +++ b/includes/add_datastream.form.inc @@ -149,7 +149,8 @@ function islandora_add_datastream_form_validate(array $form, array &$form_state) $form_state['values']['dsid'] ); $file = file_load($form_state['values']['file']); - if ($file) { + // Only validate extensions if mimes defined in ds-composite. + if ($file && $extensions) { $errors = file_validate_extensions($file, implode(' ', $extensions)); if (count($errors) > 0) { form_set_error( diff --git a/includes/mimetype.utils.inc b/includes/mimetype.utils.inc index beb4dfef..03708f99 100644 --- a/includes/mimetype.utils.inc +++ b/includes/mimetype.utils.inc @@ -73,7 +73,7 @@ function islandora_get_extensions_for_mimetype($mimetype) { function islandora_get_extensions_for_datastream(AbstractObject $object, $dsid) { module_load_include('inc', 'islandora', 'includes/utilities'); $datastream_mime_map = islandora_get_datastreams_requirements_from_models($object->models); - $mimes = $datastream_mime_map[$dsid]['mime']; + $mimes = isset($datastream_mime_map[$dsid]) ? $datastream_mime_map[$dsid]['mime'] : array(); if (isset($object[$dsid])) { $current_mime = $object[$dsid]->mimetype; if (!in_array($current_mime, $mimes)) { @@ -84,5 +84,5 @@ function islandora_get_extensions_for_datastream(AbstractObject $object, $dsid) foreach ($mimes as $mime) { $extensions = array_merge($extensions, islandora_get_extensions_for_mimetype($mime)); } - return $extensions; + return array_unique($extensions); }