From 41452ad244cd74b16b87c687ea13554a299cad69 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Tue, 10 Oct 2017 11:53:52 +0000 Subject: [PATCH] Propose to expose MIME type of files --- OaiPmhRepositoryPlugin.php | 1 + README.md | 10 ++++++++++ config_form.php | 13 +++++++++++++ languages/template.pot | 14 ++++++++++++-- libraries/OaiPmhRepository/Metadata/Mets.php | 7 +++++++ libraries/OaiPmhRepository/Metadata/Mods.php | 12 +++++++++++- libraries/OaiPmhRepository/Metadata/OaiDc.php | 7 +++++++ libraries/OaiPmhRepository/Metadata/Rdf.php | 7 +++++++ plugin.ini | 2 +- 9 files changed, 69 insertions(+), 4 deletions(-) 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')); ?> +
+
+

+ +

+ formCheckbox('oaipmh_repository_expose_mime_type', true, + array('checked' => (boolean) get_option('oaipmh_repository_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"