diff --git a/includes/add_datastream.form.inc b/includes/add_datastream.form.inc index 1a577fb8..fa94148f 100644 --- a/includes/add_datastream.form.inc +++ b/includes/add_datastream.form.inc @@ -32,7 +32,7 @@ function islandora_add_datastream_form(array $form, array &$form_state, FedoraOb '#attributes' => array( 'enctype' => 'multipart/form-data', ), - 'fieldset' => array( + 'dsid' => array( '#type' => 'fieldset', '#title' => 'Add a datastream', '#collapsible' => FALSE, diff --git a/includes/dublin_core.inc b/includes/dublin_core.inc index 53879623..a53cfcfb 100644 --- a/includes/dublin_core.inc +++ b/includes/dublin_core.inc @@ -151,7 +151,8 @@ class DublinCore { */ public static function importFromXMLString($dc_xml) { $dc_doc = new DomDocument(); - if ($dc_doc->loadXML($dc_xml)) { + // a fix for the potential error of a missing DC (patching a possible fcrepo4 error) + if (!empty($dc_xml) && $dc_doc->loadXML($dc_xml)) { $oai_dc = $dc_doc->getElementsByTagNameNS('http://purl.org/dc/elements/1.1/', '*'); $new_dc = new DublinCore(); foreach ($oai_dc as $child) { diff --git a/theme/theme.inc b/theme/theme.inc index a37cda74..f0fdcbfa 100644 --- a/theme/theme.inc +++ b/theme/theme.inc @@ -108,9 +108,19 @@ function islandora_preprocess_islandora_default(&$variables) { } $variables['datastreams'] = $datastreams; try { - $dc = $islandora_object['DC']->content; - $dc_object = DublinCore::importFromXMLString($dc); - $dc_array = $dc_object->asArray(); + //pp,jm added missing value checks for fcrepo4 + $datastream = $islandora_object['DC']; + if (isset($datastream)) { + $dc = $datastream->content; + $dc_object = DublinCore::importFromXMLString($dc); + + if (isset($dc_object)) { + $dc_array = $dc_object->asArray(); + } + else { + $dc_array = array(); + } + } } catch (Exception $e) { drupal_set_message(t('Error retrieving object %s %t', array('%s' => $islandora_object->id, '%t' => $e->getMessage())), 'error', FALSE);