function get_date($startdate, $enddate) { global $warnings; $node = ''; $start_gYear = ''; $end_gYear = ''; //validate dates if ($startdate != 0 && is_int($startdate) && $startdate < 3000) { $start_gYear = number_pad($startdate, 4); } if ($enddate != 0 && is_int($enddate) && $enddate < 3000) { $end_gYear = number_pad($enddate, 4); } if ($startdate == 0 && $enddate != 0) { $node = '<date' . (strlen($end_gYear) > 0 ? ' standardDate="' . $end_gYear . '"' : '') . '>' . get_date_textual($enddate) . '</date>'; } elseif ($startdate != 0 && $enddate == 0) { $node = '<date' . (strlen($start_gYear) > 0 ? ' standardDate="' . $start_gYear . '"' : '') . '>' . get_date_textual($startdate) . '</date>'; } elseif ($startdate == $enddate) { $node = '<date' . (strlen($end_gYear) > 0 ? ' standardDate="' . $end_gYear . '"' : '') . '>' . get_date_textual($enddate) . '</date>'; } elseif ($startdate != 0 && $enddate != 0) { $node = '<dateRange><fromDate' . (strlen($start_gYear) > 0 ? ' standardDate="' . $start_gYear . '"' : '') . '>' . get_date_textual($startdate) . '</fromDate><toDate' . (strlen($start_gYear) > 0 ? ' standardDate="' . $end_gYear . '"' : '') . '>' . get_date_textual($enddate) . '</toDate></dateRange>'; } return $node; }
function generate_nuds($row, $recordId) { //array of cleaned labels for title elements $title_elements = array(); //develop date $startdate_int = trim($row['fromDate']) * 1; $enddate_int = trim($row['toDate']) * 1; if (trim($row['fromDate']) != '' || trim($row['toDate']) != '') { $fromDate_textual = get_date_textual($startdate_int); $toDate_textual = get_date_textual($enddate_int); $date_textual = $fromDate_textual . (strlen($fromDate_textual) > 0 && strlen($toDate_textual) > 0 ? '-' : '') . $toDate_textual; $date = get_date($startdate_int, $enddate_int, $date_textual, $fromDate_textual, $toDate_textual); } //set objectType $objtype = 'Coin'; $objtype_uri = 'http://nomisma.org/id/coin'; //control $xml = '<?xml version="1.0" encoding="UTF-8"?><nuds xmlns="http://nomisma.org/nuds" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mets="http://www.loc.gov/METS/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" recordType="physical">'; $xml .= "<control><recordId>{$recordId}</recordId>"; $xml .= '<publicationStatus>approved</publicationStatus>'; $xml .= '<maintenanceAgency><agencyName>American Numismatic Society</agencyName></maintenanceAgency>'; $xml .= '<maintenanceStatus>derived</maintenanceStatus>'; $xml .= '<maintenanceHistory><maintenanceEvent>'; $xml .= '<eventType>derived</eventType><eventDateTime standardDateTime="' . date(DATE_W3C) . '">' . date(DATE_W3C) . '</eventDateTime><agentType>machine</agentType><agent>PHP</agent><eventDescription>Derived from CSV</eventDescription>'; $xml .= '</maintenanceEvent></maintenanceHistory>'; $xml .= '<rightsStmt><copyrightHolder>American Numismatic Society</copyrightHolder></rightsStmt>'; $xml .= "</control>"; $xml .= '<descMeta>'; /***** TITLE *****/ $title = $recordId; /*$title .= $title_elements['objectType']; if (array_key_exists('location', $title_elements)){ $title .= ', ' . $title_elements['location']; } if (strlen($date_textual) > 0){ $title .= ', '; $title .= $date_textual; } $title .= '. ' . $recordId;*/ $xml .= '<title xml:lang="en">' . $title . '</title>'; /************ typeDesc ***************/ $xml .= '<typeDesc>'; //fill in other typeDesc metadata $xml .= '<objectType xlink:type="simple" xlink:href="' . $objtype_uri . '">' . $objtype . '</objectType>'; //date if (strlen($date) > 0) { $xml .= $date; } //denomination if (strlen(trim($row['denomination'])) > 0) { $xml .= '<denomination xlink:type="simple"' . (strlen($row['denomination_uri']) > 0 ? ' xlink:href="' . trim($row['denomination_uri']) . '"' : '') . '>' . trim($row['denomination']) . '</denomination>'; } //material if (trim($row['material']) == 'Electrum') { $xml .= '<material xlink:type="simple" xlink:href="http://nomisma.org/id/el">Electrum</material>'; } elseif (trim($row['material']) == 'Gold') { $xml .= '<material xlink:type="simple" xlink:href="http://nomisma.org/id/av">Gold</material>'; } /***** GEOGRAPHICAL LOCATIONS *****/ if (strlen(trim($row['mint'])) > 0 || strlen(trim($row['region'])) > 0) { $xml .= '<geographic>'; if (strlen(trim($row['mint'])) > 0) { $xml .= '<geogname xlink:type="simple" xlink:role="mint"' . (strlen($row['mint_uri']) > 0 ? ' xlink:href="' . trim($row['mint_uri']) . '"' : '') . '>' . trim($row['mint']) . '</geogname>'; } if (strlen(trim($row['region'])) > 0) { $xml .= '<geogname xlink:type="simple" xlink:role="region"' . (strlen($row['region_uri']) > 0 ? ' xlink:href="' . trim($row['region_uri']) . '"' : '') . '>' . trim($row['region']) . '</geogname>'; } $xml .= '</geographic>'; } if (strlen(trim($row['obverseType'])) > 0) { $xml .= '<obverse>'; $xml .= '<type><description xml:lang="en">' . trim($row['obverseType']) . '</description></type>'; $xml .= '</obverse>'; } if (strlen(trim($row['reverseType'])) > 0) { $xml .= '<reverse>'; $xml .= '<type><description xml:lang="en">' . trim($row['reverseType']) . '</description></type>'; $xml .= '</reverse>'; } //weightStandard if (strlen(trim($row['weight_standard'])) > 0) { $xml .= '<weightStandard>' . trim($row['weight_standard']) . '</weightStandard>'; } $xml .= '</typeDesc>'; /***** PHYSICAL DESCRIPTION *****/ if (strlen(trim($row['dob'])) > 0 || trim($row['weight']) > 0 || trim($row['diameter']) > 0) { $xml .= '<physDesc>'; //dob if (strlen(trim($row['dob'])) > 0) { $xml .= '<dateOnObject><date>' . $row['dob'] . '</date></dateOnObject>'; } //create measurementsSet, if applicable if (trim($row['weight']) > 0 || trim($row['diameter']) > 0) { $xml .= '<measurementsSet>'; //weight $weight = trim($row['weight']); if (is_numeric($weight) && $weight > 0) { $xml .= '<weight units="g">' . $weight . '</weight>'; } //diameter $diameter = trim(str_replace('mm', '', $row['diameter'])); if (is_numeric($diameter) && $diameter > 0) { $xml .= '<diameter units="mm">' . $diameter . '</diameter>'; } $xml .= '</measurementsSet>'; } $xml .= '</physDesc>'; } /***** FINDSPOT DESCRIPTION *****/ if (strlen(trim($row['findspot'])) > 0 || strlen(trim($row['hoard'])) > 0) { if (strlen(trim($row['hoard'])) > 0) { $id = strtolower(str_replace(' ', '', trim($row['hoard']))); $hoardUri = "http://nomisma.org/id/{$id}"; $xml .= '<findspotDesc xlink:type="simple" xlink:href="' . $hoardUri . '"/>'; } elseif (strlen(trim($row['findspot'])) > 0) { $xml .= '<findspotDesc>'; $xml .= '<findspot><geogname xlink:type="simple" xlink:role="findspot">' . trim($row['findspot']) . '</geogname></findspot>'; $xml .= '</findspotDesc>'; } } /***** ADMINSTRATIVE DESCRIPTION *****/ $xml .= '<adminDesc>'; if (strlen(trim($row['identifier'])) > 0) { $xml .= '<identifier>' . $row['identifier'] . '</identifier>'; } if (strlen(trim($row['repository'])) > 0) { $xml .= '<repository>' . $row['repository'] . '</repository>'; } if (strlen(trim($row['auc1'])) > 0 || strlen(trim($row['auc2'])) > 0 || strlen(trim($row['auc3'])) > 0 || strlen(trim($row['auc4'])) > 0 || strlen(trim($row['auc5'])) > 0 || strlen(trim($row['provenance'])) > 0) { $xml .= '<provenance><chronList>'; //previous collection if (strlen(trim($row['provenance'])) > 0) { $xml .= '<chronItem><previousColl>' . trim($row['provenance']) . '</previousColl></chronItem>'; } //auction catalogs $xml .= auction_to_nuds($row, 'auc1'); $xml .= auction_to_nuds($row, 'auc2'); $xml .= auction_to_nuds($row, 'auc3'); $xml .= auction_to_nuds($row, 'auc4'); $xml .= auction_to_nuds($row, 'auc5'); $xml .= '</chronList></provenance>'; } $xml .= '</adminDesc>'; /***** BIBLIOGRAPHIC DESCRIPTION *****/ if (strlen(trim($row['ref1'])) > 0 || strlen(trim($row['ref2'])) > 0 || strlen(trim($row['ref3'])) > 0 || strlen(trim($row['ref4'])) > 0 || strlen(trim($row['ref5'])) > 0) { $xml .= '<refDesc>'; $xml .= reference_to_nuds($row, 'ref1'); $xml .= reference_to_nuds($row, 'ref2'); $xml .= reference_to_nuds($row, 'ref3'); $xml .= reference_to_nuds($row, 'ref4'); $xml .= reference_to_nuds($row, 'ref5'); $xml .= '</refDesc>'; } $xml .= '</descMeta>'; /***** IMAGES *****/ $xml .= '<digRep><mets:fileSec>'; $xml .= '<mets:fileGrp USE="obverse">'; $xml .= '<mets:file USE="reference" MIMETYPE="image/jpeg"><mets:FLocat LOCTYPE="URL" xlink:href="media/reference/' . trim($row['obv_image']) . '.jpg"/></mets:file>'; $xml .= '<mets:file USE="thumbnail" MIMETYPE="image/jpeg"><mets:FLocat LOCTYPE="URL" xlink:href="media/thumbnail/' . trim($row['obv_image']) . '.jpg"/></mets:file>'; $xml .= '</mets:fileGrp>'; $xml .= '<mets:fileGrp USE="reverse">'; $xml .= '<mets:file USE="reference" MIMETYPE="image/jpeg"><mets:FLocat LOCTYPE="URL" xlink:href="media/reference/' . trim($row['rev_image']) . '.jpg"/></mets:file>'; $xml .= '<mets:file USE="thumbnail" MIMETYPE="image/jpeg"><mets:FLocat LOCTYPE="URL" xlink:href="media/thumbnail/' . trim($row['rev_image']) . '.jpg"/></mets:file>'; $xml .= '</mets:fileGrp>'; $xml .= '</mets:fileSec></digRep>'; //close nuds $xml .= '</nuds>'; return $xml; }