function insertLayerMetadataUrls($i)
 {
     //first delete the old ones - but only those who have been harvested thru caps before!
     global $con;
     $sql = "DELETE FROM mb_metadata WHERE metadata_id IN (SELECT metadata_id FROM mb_metadata INNER JOIN";
     $sql .= " (SELECT * from ows_relation_metadata WHERE fkey_layer_id = \$1) as relation ON ";
     $sql .= " mb_metadata.metadata_id = relation.fkey_metadata_id AND mb_metadata.origin = 'capabilities')";
     $v = array($this->objLayer[$i]->db_id);
     $t = array('i');
     $res = db_prep_query($sql, $v, $t);
     //origin 2 - set by mapbender metadata editor - new record
     //origin 3 - set by mapbender metadata editor - new linkage
     //harvest the record if some readable format is given - should this be adoptable?
     //parse the content if iso19139 is given
     //TODO: generate temporal uuid for inserting and getting the serial afterwards
     for ($j = 0; $j < count($this->objLayer[$i]->layer_metadataurl); $j++) {
         //check for returned format?
         if ($this->objLayer[$i]->layer_metadataurl[$j]->type == 'ISO19115:2003' && $this->objLayer[$i]->layer_metadataurl[$j]->format == 'text/xml' || $this->objLayer[$i]->layer_metadataurl[$j]->type == 'TC211' && $this->objLayer[$i]->layer_metadataurl[$j]->format == 'text/xml') {
             //load metadata from link
             $metadataConnector = new connector($this->objLayer[$i]->layer_metadataurl[$j]->href);
             $metaData = $metadataConnector->file;
             //parse metadata
             try {
                 //$iso19139Xml = simplexml_load_string($metaData);
                 $iso19139Xml = new SimpleXMLElement($metaData);
                 if ($iso19139Xml == false) {
                     throw new Exception('Cannot parse Metadata XML!');
                 }
             } catch (Exception $e) {
                 $e = new mb_exception($e->getMessage());
             }
             if ($iso19139Xml != false) {
                 //get elements for database from xml by using xpath
                 //uuid
                 $uuid = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:fileIdentifier/gco:CharacterString');
                 //createdate
                 $createdate = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:dateStamp/gco:Date');
                 //changedate
                 $changedate = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:dateStamp/gco:Date');
                 //TODO: check if this is set, maybe DateTime must be searched instead?
                 //title
                 $title = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString');
                 //dataset identifier - howto model into md_metadata?
                 //check where datasetid is defined - maybe as RS_Identifier or as MD_Identifier see http://inspire.jrc.ec.europa.eu/documents/Metadata/INSPIRE_MD_IR_and_ISO_v1_2_20100616.pdf page 18
                 $code = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString');
                 $codeSpace = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString');
                 $e = new mb_exception("class_wms.php: code: " . $code[0]);
                 $e = new mb_exception("class_wms.php: codeSpace: " . $codeSpace[0]);
                 if (isset($codeSpace[0]) && isset($code[0]) && $codeSpace[0] != '' && $code[0] != '') {
                     $datasetid = $codeSpace[0] . "#" . $code[0];
                     $e = new mb_exception("class_wms.php: datasetid: " . $datasetid);
                 } else {
                     $datasetid = 'undefined';
                     # in sense of INSPIRE TODO control MD_Identifier too!
                     $e = new mb_exception("class_wms.php: datasetid: " . $datasetid);
                 }
                 //abstract
                 $abstract = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString');
                 //searchtext -- use keywords!
                 $keywords = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString');
                 //type
                 $type = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:hierarchyLevel/gmd:MD_ScopeCode');
                 //tmp_reference_1
                 $tmp_reference_1 = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition');
                 //tmp_reference_2
                 $tmp_reference_2 = $iso19139Xml->xpath('/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition');
                 //spatial_res_type
                 //spatial_res_value
                 //ref_system
                 //format
                 //inspire_charset
                 //inspire_top_consistence
                 //responsible_party
                 //fees
                 //"constraints"
                 //fill database with elements:
                 $sql = "INSERT INTO mb_metadata (link, origin, md_format, data, linktype, uuid, title, createdate, changedate, abstract, searchtext, type, tmp_reference_1, tmp_reference_2, export2csw, datasetid) ";
                 $sql .= "VALUES(\$1, 'capabilities', \$2, \$3, \$4, \$5, \$6, \$7, \$8, \$9, \$10, \$11, \$12, \$13, \$14, \$15)";
                 $v = array($this->objLayer[$i]->layer_metadataurl[$j]->href, $this->objLayer[$i]->layer_metadataurl[$j]->format, $metaData, $this->objLayer[$i]->layer_metadataurl[$j]->type, $uuid[0], $title[0], $createdate[0], $changedate[0], $abstract[0], $keywords[0], $type[0], $tmp_reference_1[0], $tmp_reference_2[0], 't', $datasetid);
                 $t = array('s', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 'b', 's');
                 $res = db_prep_query($sql, $v, $t);
                 if (!$res) {
                     db_rollback();
                 }
                 //get last inserted serial_id
                 $mdId = db_insert_id($con, 'mb_metadata', 'metadata_id');
                 //insert into ows_relation_metadata (fkey_layer_id, fkey_metadata_id) values (20131,3);
                 $sql = "INSERT INTO ows_relation_metadata (fkey_layer_id, fkey_metadata_id) values (\$1, \$2);";
                 $v = array($this->objLayer[$i]->db_id, $mdId);
                 $t = array('i', 'i');
                 $res = db_prep_query($sql, $v, $t);
                 if (!$res) {
                     db_rollback();
                 } else {
                     $sql = "UPDATE mb_metadata SET harvestresult = 1 where metadata_id = \$1";
                     $v = array($mdId);
                     $t = array('i');
                     $res = db_prep_query($sql, $v, $t);
                 }
             }
         } else {
             //no readable format given - only store the links!
             //don't push single elements into database
             $sql = "INSERT INTO mb_metadata (link, origin, md_format, linktype) ";
             $sql .= "VALUES(\$1, 'capabilities', \$2, \$3)";
             $v = array($this->objLayer[$i]->layer_metadataurl[$j]->href, $this->objLayer[$i]->layer_metadataurl[$j]->format, $this->objLayer[$i]->layer_metadataurl[$j]->type);
             $t = array('s', 's', 's');
             $res = db_prep_query($sql, $v, $t);
             if (!$res) {
                 db_rollback();
             }
             //get last inserted serial_id
             $mdId = db_insert_id($con, 'mb_metadata', 'metadata_id');
             //insert into ows_relation_metadata (fkey_layer_id, fkey_metadata_id) values (20131,3);
             $sql = "INSERT INTO ows_relation_metadata (fkey_layer_id, fkey_metadata_id) values (\$1, \$2);";
             $v = array($this->objLayer[$i]->db_id, $mdId);
             $t = array('i', 'i');
             $res = db_prep_query($sql, $v, $t);
             if (!$res) {
                 db_rollback();
             } else {
                 //set harvest result to 0 cause this metadata format can not to be parsed
                 $sql = "UPDATE mb_metadata SET harvestresult = 0 where metadata_id = \$1";
                 $v = array($mdId);
                 $t = array('i');
                 $res = db_prep_query($sql, $v, $t);
             }
         }
     }
 }
<?php

require_once dirname(__FILE__) . "/../php/mb_validateSession.php";
require_once dirname(__FILE__) . "/classes/factoryClasses.php";
require_once dirname(__FILE__) . "/../include/dyn_php.php";
$pf = new mbPdfFactory();
$confFile = basename($_REQUEST["printPDF_template"]);
if (!preg_match("/^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9]+)\$/", $confFile) || !file_exists($_REQUEST["printPDF_template"])) {
    $errorMessage = _mb("Invalid configuration file");
    echo htmlentities($errorMessage, ENT_QUOTES, CHARSET);
    $e = new mb_exception($errorMessage);
    die;
}
$pdf = $pf->create($_REQUEST["printPDF_template"]);
//element vars of print
$pdf->unlinkFiles = $unlink;
$pdf->logRequests = $logRequests;
$pdf->logType = $logType;
try {
    $pdf->render();
    $pdf->save();
} catch (Exception $e) {
    new mb_exception($e->getMessage());
    die($e->getMessage());
}
print $pdf->returnAbsoluteUrl();