/** * Import metadata. * * @param Omeka_Record $object The Fedora object record. * @param string $dsid The dsid to import. */ public function import($object, $dsid) { // Get object parent item. $item = $object->getItem(); // Get metadata XML for the datastream. $xml = new DOMXPath($this->getMetadataXml($object, $dsid)); // Get DC elements. $elements = $this->db->getTable('Element')->findBySet('Dublin Core'); // Run queries and write texts. foreach ($elements as $element) { // Execute for the element. $queries = $this->getQueries($element->name); $nodes = $this->queryAll($xml, $queries); // Write new element texts. foreach ($nodes as $node) { $text = new ElementText(); $text->record_id = $item->id; $text->record_type = 'Item'; $text->element_id = $element->id; $text->html = 0; $text->text = $node->nodeValue; $text->save(); } } }
/** * Import the Dublin Core Metadata stored in the descProperties datastream * * @param Omeka_Record $object The Fedora object record. * @param string $dsid The datastream ID to import. */ public function import($object, $dsid) { //Gets the url to the item's datastream content (ex: /fedora/objects/abc:defg890/datastreams/descMetadata/content) $url = $object->getMetadataUrl($dsid); $descMetadataContent = file_get_contents($url); //these are the only metadata types in the datastream $CPHMetadataTypes = explode(' ', 'Title Creator Subject Description Publisher Contributor Type Format Identifier Language Relation Rights'); $elements = $this->db->getTable('Element')->findBySet('Dublin Core'); $itemID = $object->getItem()->id; //save datastream element texts foreach ($elements as $element) { //current element is one of the types in the datastream if (in_array($element->name, $CPHMetadataTypes, true)) { $elementName = strtolower($element->name) . '> "'; $start = strpos($descMetadataContent, $elementName); $end = strpos($descMetadataContent, '" .', $start); $elementNameLength = strlen($elementName); $elementText = substr($descMetadataContent, $start + $elementNameLength, $end - $start - $elementNameLength); $checkIfEmpty = trim($elementText); //only save the element if it has content if (!empty($checkIfEmpty)) { try { $this->saveElementText($itemID, $element->id, $elementText); } catch (Exception $e) { _log($e->getMessage()); } } } } }