diff --git a/OaiPmhRepositoryPlugin.php b/OaiPmhRepositoryPlugin.php
index 4691f5b..9e5bb59 100644
--- a/OaiPmhRepositoryPlugin.php
+++ b/OaiPmhRepositoryPlugin.php
@@ -33,6 +33,7 @@ class OaiPmhRepositoryPlugin extends Omeka_Plugin_AbstractPlugin
'oaipmh_repository_expose_files' => 1,
'oaipmh_repository_expose_empty_collections' => 1,
'oaipmh_repository_expose_item_type' => 0,
+ 'oaipmh_repository_expose_mime_type' => 0,
);
/**
diff --git a/README.md b/README.md
index 7b85e3d..4ca8b46 100644
--- a/README.md
+++ b/README.md
@@ -84,6 +84,16 @@ Default: false
*Added in version 2.1*
+### Expose MIME type ###
+Whether the plugin should exposer the MIME type of files as Dublin Core Format.
+When enabled, for items that have files, the repository will expose additional
+Dublin Core Format elements (one for each different MIME type) with a value of
+the MIME types found in the item's files.
+
+Default: false
+
+*Added in version 2.2.0*
+
## Advanced Configuration ##
The plugin also allows you to configure some more options about how the repository responds to harvesters. Since the default values
are recommended for most users, these values must be edited by hand, in the config.ini file in the plugin's root directory.
diff --git a/config_form.php b/config_form.php
index 1e5435a..67aa30c 100644
--- a/config_form.php
+++ b/config_form.php
@@ -81,3 +81,16 @@
array('checked' => (boolean) get_option('oaipmh_repository_expose_item_type'))); ?>
+
+
+ formLabel('oaipmh_repository_expose_mime_type',
+ __('Expose MIME type')); ?>
+
+
+
diff --git a/languages/template.pot b/languages/template.pot
index a676250..50e9572 100644
--- a/languages/template.pot
+++ b/languages/template.pot
@@ -17,11 +17,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: OaiPmhRepositoryPlugin.php:119
+#: OaiPmhRepositoryPlugin.php:120
msgid "OAI-PMH Repository"
msgstr ""
-#: OaiPmhRepositoryPlugin.php:120 config_form.php:16
+#: OaiPmhRepositoryPlugin.php:121 config_form.php:16
msgid "Harvester can access metadata from this site"
msgstr ""
@@ -69,3 +69,13 @@ msgstr ""
#: config_form.php:78
msgid "Whether the plugin should expose the item type as Dublin Core Type."
msgstr ""
+
+#: config_form.php:87
+msgid "Expose MIME type"
+msgstr ""
+
+#: config_form.php:91
+msgid ""
+"Whether the plugin should expose the mime type of files as Dublin Core "
+"Format."
+msgstr ""
diff --git a/libraries/OaiPmhRepository/Metadata/Mets.php b/libraries/OaiPmhRepository/Metadata/Mets.php
index 2438bc3..4ee7042 100644
--- a/libraries/OaiPmhRepository/Metadata/Mets.php
+++ b/libraries/OaiPmhRepository/Metadata/Mets.php
@@ -71,6 +71,13 @@ public function appendMetadata($item, $metadataElement)
if ($dcType = $item->getProperty('item_type_name')) {
$dcXml->appendNewElement('dc:type', $dcType);
}
+ } elseif ($elementName == 'format' && get_option('oaipmh_repository_expose_mime_type')) {
+ $mimeTypes = array_unique(array_map(function($file) {
+ return $file->mime_type;
+ }, $item->getFiles()));
+ foreach ($mimeTypes as $mimeType) {
+ $dcXml->appendNewElement('dc:format', $mimeType);
+ }
}
foreach($dcElements as $elementText)
diff --git a/libraries/OaiPmhRepository/Metadata/Mods.php b/libraries/OaiPmhRepository/Metadata/Mods.php
index 570aec3..b779b5d 100644
--- a/libraries/OaiPmhRepository/Metadata/Mods.php
+++ b/libraries/OaiPmhRepository/Metadata/Mods.php
@@ -88,7 +88,17 @@ public function appendMetadata($item, $metadataElement)
$physicalDescription = $mods->appendNewElement('physicalDescription');
$physicalDescription->appendNewElement('form', $format->text);
}
-
+
+ if (get_option('oaipmh_repository_expose_mime_type')) {
+ $mimeTypes = array_unique(array_map(function($file) {
+ return $file->mime_type;
+ }, $item->getFiles()));
+ foreach ($mimeTypes as $mimeType) {
+ $physicalDescription = $mods->appendNewElement('physicalDescription');
+ $physicalDescription->appendNewElement('internetMediaType', $mimeType);
+ }
+ }
+
$languages = $item->getElementTexts('Dublin Core','Language');
foreach($languages as $language)
{
diff --git a/libraries/OaiPmhRepository/Metadata/OaiDc.php b/libraries/OaiPmhRepository/Metadata/OaiDc.php
index 7f924f6..030a0a5 100644
--- a/libraries/OaiPmhRepository/Metadata/OaiDc.php
+++ b/libraries/OaiPmhRepository/Metadata/OaiDc.php
@@ -67,6 +67,13 @@ public function appendMetadata($item, $metadataElement)
if ($dcType = $item->getProperty('item_type_name')) {
$oai_dc->appendNewElement('dc:type', $dcType);
}
+ } elseif ($elementName == 'format' && get_option('oaipmh_repository_expose_mime_type')) {
+ $mimeTypes = array_unique(array_map(function($file) {
+ return $file->mime_type;
+ }, $item->getFiles()));
+ foreach ($mimeTypes as $mimeType) {
+ $oai_dc->appendNewElement('dc:format', $mimeType);
+ }
}
foreach($dcElements as $elementText)
diff --git a/libraries/OaiPmhRepository/Metadata/Rdf.php b/libraries/OaiPmhRepository/Metadata/Rdf.php
index 235a4a8..b2be276 100644
--- a/libraries/OaiPmhRepository/Metadata/Rdf.php
+++ b/libraries/OaiPmhRepository/Metadata/Rdf.php
@@ -121,6 +121,13 @@ public function appendMetadata($item, $metadataElement)
if ($dcType = $item->getProperty('item_type_name')) {
$description->appendNewElement('dc:type', $dcType);
}
+ } elseif ($elementName == 'Format' && get_option('oaipmh_repository_expose_mime_type')) {
+ $mimeTypes = array_unique(array_map(function($file) {
+ return $file->mime_type;
+ }, $item->getFiles()));
+ foreach ($mimeTypes as $mimeType) {
+ $description->appendNewElement('dc:format', $mimeType);
+ }
}
foreach ($texts as $text) {
diff --git a/plugin.ini b/plugin.ini
index 869cb98..4f5da5b 100644
--- a/plugin.ini
+++ b/plugin.ini
@@ -7,4 +7,4 @@ link="https://github.com/zerocrates/OaiPmhRepository#readme"
support_link="https://github.com/zerocrates/OaiPmhRepository/issues"
omeka_minimum_version="2.0"
omeka_target_version="2.3"
-version="2.1.1"
+version="2.2.0"