get("mb_lang"); if (isset($sessionLang) && ($sessionLang!='')) { $e = new mb_notice("mod_showMetadata.php: language found in session: ".$sessionLang); $language = $sessionLang; $langCode = explode("_", $language); $langCode = $langCode[0]; # Hopefully de or s.th. else $languageCode = $langCode; #overwrite the GET Parameter with the SESSION information } if (isset($_REQUEST["languageCode"]) & $_REQUEST["languageCode"] != "") { //validate to csv integer list $testMatch = $_REQUEST["languageCode"]; if (!($testMatch == 'de' or $testMatch == 'fr' or $testMatch == 'en')){ //echo 'languageCode: '.$testMatch.' is not valid.
'; echo 'Parameter languageCode is not valid (de,fr,en).
'; die(); } $languageCode = $testMatch; $testMatch = NULL; } if (isset($_REQUEST["resolveCoupledResources"]) & $_REQUEST["resolveCoupledResources"] != "") { $testMatch = $_REQUEST["resolveCoupledResources"]; if (!($testMatch == 'true' or $testMatch == 'false')){ echo 'Parameter resolveCoupledResources is not valid (true,false (default to false)).
'; die(); } switch ($testMatch) { case "true": $resolveCoupledResources = true; break; case "false": $resolveCoupledResources = false; break; } $testMatch = NULL; } //write languageCode into session! $localeObj->setCurrentLocale($languageCode); if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") { //validate to de, en, fr $testMatch = $_REQUEST["outputFormat"]; if (!($testMatch == 'html' or $testMatch == 'rdf' or $testMatch == 'iso19139' or $testMatch == 'html2' or $testMatch == 'html3')){ //echo 'languageCode: '.$testMatch.' is not valid.
'; echo 'Parameter outputFormat is not valid (html,rdf,iso19139).
'; die(); } $outputFormat = $testMatch; $testMatch = NULL; } //initialize if resource is based on a request to csw interface $cswBasedResource = false; //instantiate $mbMetadata = new Iso19139(); //test if getrecordbyid request was used - then the service data may also be in the same catalogue if (strpos(strtoupper($url), "GETRECORDBYID") !== false && strpos(strtoupper($url), "SERVICE=CSW") !== false && strpos(strtoupper($url), "VERSION=2.0.2") !== false) { $cswBasedResource = true; } //build search request for services //TODO: test if this ok - maybe not everything is parsed by class? instead we could use $mbMetadata->readFromUrl($url); $mbMetadata->createFromUrl($url); //$e = new mb_exception("php/mod_exportIso19139.php: url for getrecordbyid: ".$url); //$e = new mb_exception("php/mod_exportIso19139.php: datasetid from getrecordbyid: ".$mbMetadata->datasetIdCodeSpace.$mbMetadata->datasetId); //$e = new mb_exception("datasetId: ".$mbMetadata->datasetId); //$e = new mb_exception("datasetIdCodeSpace: ".$mbMetadata->datasetIdCodeSpace); //$e = new mb_exception("hierarchyLevel: ".$mbMetadata->hierarchyLevel); $serviceMetadata = new stdClass(); $serviceMetadataIndex = 0; if ($mbMetadata->hierarchyLevel == 'dataset' || $mbMetadata->hierarchyLevel == 'series') { //get datasetidentifier to resolve coupled resources //$e = new mb_exception("datasetId: ".$mbMetadata->datasetId); //$e = new mb_exception("datasetIdCodeSpace: ".$mbMetadata->datasetIdCodeSpace); if ($resolveCoupledResources == true && $cswBasedResource == true) { //$e = new mb_exception("try to resolve coupled resources"); //createCatObjFromXML($url); $csw = new csw(); //$e = new mb_exception("parse csw capabilities!"); //parse url $urlArray = parse_url($url); //$e = new mb_exception(json_encode($urlArray)); //$urlWithoutRequest = $urlArray['scheme']."://".$urlArray['host'].":".$urlArray['port']."/".$urlArray['path']; $urlWithoutRequest = $urlArray['scheme']."://".$urlArray['host'].$urlArray['path']; $csw->createCatObjFromXML($urlWithoutRequest."?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetCapabilities"); //$e = new mb_exception($urlWithoutRequest."?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetCapabilities"); $cswClient = new cswClient(); $operation = "getrecordsresolvecoupling"; $getrecordId = $mbMetadata->fileIdentifier; $datasetId = str_replace('&','&',$mbMetadata->datasetIdCodeSpace.$mbMetadata->datasetId); $recordType = 'service'; $cswResponseObject = $cswClient->doRequest(false, $operation, $getrecordId, false, $recordType, false, false, false, $datasetId, $csw); //$e = new mb_exception("test1"); //$e = new mb_exception($cswClient->operationSuccessful); //$e = new mb_exception("test2"); $serviceMetadataUrls = array(); if ($cswClient->operationSuccessful == true) { //$e = new mb_exception("operation successfull"); //$e = new mb_exception(gettype($cswClient->operationResult)); $metadataRecord = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata'); //$e = new mb_exception("number of records: ".count($metadataRecord)); //what is possible: keywords, categories?, spatial, ... for ($k = 1; $k <= count($metadataRecord) ; $k++) { $fileIdentifier = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:fileIdentifier/gco:CharacterString'); $fileIdentifier = (string)$fileIdentifier[0]; //service date $mdDateStamp = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:date/gmd:CI_Date/gmd:date/gco:Date'); $mdDateStamp = (string)$mdDateStamp[0]; //service title $mdTitle = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString'); $mdTitle = (string)$mdTitle[0]; //service type $mdServiceType = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName'); $mdServiceType = (string)$mdServiceType[0]; //accessUrl $mdAccessUrl = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL'); $mdAccessUrl = (string)$mdAccessUrl[0]; //get service type - view / download //get service title /*$datasetIdentifier = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:identificationInfo/gmd:MD_DataIdentification/@uuid'); $datasetidentifier = (string)$datasetidentifier[0]; $url = $cswClient->operationResult->xpath('/csw:GetRecordsResponse/csw:SearchResults/gmd:MD_Metadata['.$k.']/gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL'); $url = (string)$url[0]; if (isset($url) && $url !=="") { //$metadataArray[$numberOfMetadataRecords]['uuid'] = $datasetIdentifier; $metadataArray[$numberOfMetadataRecords]['uuid'] = $fileIdentifier; $metadataArray[$numberOfMetadataRecords]['changedate'] = $mdDateStamp; $numberOfMetadataRecords++; }*/ //$e = new mb_exception("found service with fileIdentifier: ".$fileIdentifier." - date - ".$mdDateStamp); $serviceMetadata->service[$k]->serviceType = $mdServiceType; $serviceMetadata->service[$k]->serviceTitle = $mdTitle; $serviceMetadata->service[$k]->serviceDate = $mdDateStamp; $serviceMetadata->service[$k]->metadataUrl = $urlWithoutRequest."?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&ElementSetName=full&&outputSchema=".urlencode('http://www.isotc211.org/2005/gmd')."&id=".$fileIdentifier; $serviceMetadata->service[$k]->accessUrl = $mdAccessUrl; } } /*if ($cswClient->operationSuccessful == true) { if ($cswResponseObject !== false) { $e = new mb_exception("php/mod_exportIso19139.php: returned service records: ".$cswClient->operationResult->asXML()); } }*/ } } //resolve operates on //new - test createFromUrl instead and build the presentations from object! There for a new json configuration is needed! //html2 / html3 - conf from json! switch ($outputFormat) { case "html3": $html = $mbMetadata->transformToHtml3('tabs',$languageCode); header("Content-type: text/html; charset=UTF-8"); echo $html; break; case "html2": $html = $mbMetadata->transformToHtml2('tabs',$languageCode); header("Content-type: text/html; charset=UTF-8"); echo $html; break; case "html": $html = $mbMetadata->transformToHtml('tabs', $languageCode, $serviceMetadata); header("Content-type: text/html; charset=UTF-8"); echo $html; /*foreach ($serviceMetadata as $serviceMetadatas) { echo "
".json_encode($serviceMetadata)."
"; }*/ break; case "rdf": $rdf = $mbMetadata->transformToRdf(); header("Content-type: text/xml; charset=UTF-8"); echo $rdf; break; case "iso19139": $xml = $mbMetadata->metadata; header("Content-type: text/xml; charset=UTF-8"); echo $xml; break; } ?>