[:space:]]+[[:alnum:]/]", "\\0 ", $string);
$string = mb_eregi_replace("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtg]|fo|me)?$", "\\0 ", $string);
$string = mb_eregi_replace("\n", " ", $string);
return $string;
}
function getEpsgByLayerId ($layer_id) { // from merge_layer.php
$epsg_list = "";
$sql = "SELECT DISTINCT epsg FROM layer_epsg WHERE fkey_layer_id = $1";
$v = array($layer_id);
$t = array('i');
$res = db_prep_query($sql, $v, $t);
while($row = db_fetch_array($res)){
$epsg_list .= $row['epsg'] . " ";
}
return trim($epsg_list);
}
//function to generate temporal kml-file
function generateKML($kml_id,$resdir,$getmapurl,$wmsversion,$layername,$layertitle,$north,$south,$east,$west){
$getmapurl = eregi_replace("&","&", $getmapurl);
//$kml_id=md5(uniqid(rand(), true));
if($h = fopen($resdir."/".$kml_id.".kml","w+")){
// $content = $text .chr(13).chr(10); //example for linefeeds
$kml="".chr(13).chr(10);
$kml.="".chr(13).chr(10);
$kml.="".chr(13).chr(10);
$kml.="".$layertitle." - www.geoportal.rlp.de ".chr(13).chr(10);
$kml.="".chr(13).chr(10);
$kml.="".$getmapurl."VERSION=".$wmsversion."&REQUEST=GetMap&SRS=EPSG:4326&WIDTH=512&HEIGHT=512&LAYERS=".$layername."&STYLES=&TRANSPARENT=TRUE&BGCOLOR=0xffffff&FORMAT=image/png& ".chr(13).chr(10);
//http://www.geoportal.rlp.de/owsproxy/3acc4cc90d02c754c531a9d5fa1b1545/5d38dd28a830f2c4ab97a506225d0a9b?VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&WIDTH=512&HEIGHT=512&LAYERS=boriweCD01&TRANSPARENT=TRUE&FORMAT=image/jpeg&
$kml.="onExpire ".chr(13).chr(10);
$kml.="onStop ".chr(13).chr(10);
$kml.="1 ".chr(13).chr(10);
$kml.="0.87 ".chr(13).chr(10);
$kml.=" ".chr(13).chr(10);
$kml.="".chr(13).chr(10);
$kml.="".$north." ".chr(13).chr(10);
$kml.="".$south." ".chr(13).chr(10);
$kml.="".$east." ".chr(13).chr(10);
$kml.="".$west." ".chr(13).chr(10);
$kml.=" ".chr(13).chr(10);
$kml.=" ".chr(13).chr(10);
$kml.=" ".chr(13).chr(10);
if(!fwrite($h,$kml)){
#exit;
}
fclose($h);
}
}
$metadataStr = "";
$metadataStr .= '' .
'
' .
'Metadaten ' .
' '.
' ' .
' '.
' '.
' '.
' '.
' '.
' ' .
' ' .
''.
'';
$wms_id = $_GET['wmsid'];
if ($wms_id) {
$sql = "SELECT layer_id FROM layer WHERE fkey_wms_id = $1 AND layer_pos = 0";
$v = array($wms_id);
$t = array("i");
$res = db_prep_query($sql, $v, $t);
$row = db_fetch_array($res);
$layer_id = $row["layer_id"];
}
if ($layer_id) {
$sql = "SELECT ";
$sql .= "layer.layer_id, layer.layer_title, layer.layer_abstract, layer.layer_pos, layer.layer_parent, ";
$sql .= "layer.layer_minscale, layer.layer_maxscale, layer_dataurl, layer_metadataurl, ";
$sql .= "wms.wms_title, wms.wms_abstract, wms.wms_id, wms.fees, wms.accessconstraints, wms.contactperson, ";
$sql .= "wms.contactposition, wms.contactorganization, wms.address, wms.city, wms_timestamp, wms_owner, ";
$sql .= "wms.stateorprovince, wms.postcode, wms.contactvoicetelephone, wms.contactfacsimiletelephone, ";
$sql .= "wms.contactelectronicmailaddress, wms.country ";
$sql .= "FROM layer, wms WHERE layer.layer_id = $1 AND layer.fkey_wms_id = wms.wms_id LIMIT 1";
$v = array($layer_id);
$t = array('i');
}
else if ($wms_getmap && $layer_name) {
$sql = "SELECT ";
$sql .= "layer.layer_id, layer.layer_title, layer.layer_abstract, layer.layer_pos, layer.layer_parent, ";
$sql .= "layer.layer_minscale, layer.layer_maxscale, layer_dataurl, layer_metadataurl, ";
$sql .= "wms.wms_title, wms.wms_abstract, wms.wms_id, wms.fees, wms.accessconstraints, wms.contactperson, ";
$sql .= "wms.contactposition, wms.contactorganization, wms.address, wms.city, wms_timestamp, wms_owner, ";
$sql .= "wms.stateorprovince, wms.postcode, wms.contactvoicetelephone, wms.contactfacsimiletelephone, ";
$sql .= "wms.contactelectronicmailaddress, wms.country ";
$sql .= "FROM layer, wms WHERE layer.layer_pos <> 0 AND layer.layer_name = $1 AND layer.fkey_wms_id = wms.wms_id AND wms.wms_getmap LIKE $2 LIMIT 1";
$v = array($layer_name, $wms_getmap."%");
$t = array('s', 's');
}
else die("layer not specified!");
$res = db_prep_query($sql,$v,$t);
$metadataStr .= db_error();
$layer = array();
$row = db_fetch_array($res);
$layer_id = $row['layer_id'];
$layer_name = $row['layer_name'];
if($row['wms_owsproxy']!='') {
$secured=true;
}
else {
$secured=false;
}
$sql_dep = "SELECT mb_group_name FROM mb_group AS a, mb_user AS b, mb_user_mb_group AS c WHERE b.mb_user_id = $1 AND b.mb_user_id = c.fkey_mb_user_id AND c.fkey_mb_group_id = a.mb_group_id AND b.mb_user_department = a.mb_group_description LIMIT 1";
$v_dep = array($row['wms_owner']);
$t_dep = array('i');
$res_dep = db_prep_query($sql_dep, $v_dep, $t_dep);
$row_dep = db_fetch_array($res_dep);
$layer['ID'] = $row['layer_id'];
$layer['Titel'] = $row['layer_title'];
$layer['Zusammenfassung'] = $row['layer_abstract'];
if ($row['layer_pos'] || $row['layer_parent']) {
if ($row['layer_minscale'] > 0)
{
$layer['Minscale'] = "1 : ". $row['layer_minscale'];
}
else
{$layer['Minscale'] = "-";}
if ($row['layer_maxscale'] > 0)
{
$layer['Maxscale'] = "1 : ". $row['layer_maxscale'];
}
else
{$layer['Maxscale'] = "-";}
}
$layer['Koordinatensysteme'] = preg_replace("/ /", ", ", getEpsgByLayerId($row['layer_id']));
if ($row['wms_timestamp']) {
$layer['Datum der Registrierung'] = date("d.m.Y",$row['wms_timestamp']);
}
else {
$layer['Datum der Registrierung'] = "Keine Angabe";
}
$layer['Registrierende Stelle'] = $row_dep['mb_group_name'];
$layer['WMS ID'] = $row['wms_id'];
$layer['Mapbender Capabilities Dokument'] = "Capabilities-Dokument ";
$layer['Service Metadaten'] = " "."Validierung ";
$layer['WMS Titel'] = $row['wms_title'];
$layer['WMS Zusammenfassung'] = $row['wms_abstract'];
$layer['Gebühren'] = $row['fees'];
$layer['Zugriffsbeschränkung'] = $row['accessconstraints'];
$layer['Ansprechpartner'] = $row['contactperson'];
$layer['Organisation'] = $row['contactorganization'];
$layer['Adresse'] = $row['address'];
$layer['Stadt'] = $row['city'];
$layer['Bundesland'] = $row['stateorprovince'];
$layer['PLZ'] = $row['postcode'];
$layer['Telefon'] = $row['contactvoicetelephone'];
$layer['Fax'] = $row['contactfacsimiletelephone'];
$layer['E-Mail'] = $row['contactelectronicmailaddress'];
$layer['Land'] = $row['country'];
$layer['Metadaten'] = $row['layer_metadataurl'];
$metadataUrl = $row['layer_metadataurl'];
if ($layer['Metadaten'] && $redirectToMetadataUrl) {
header("Location: " . $layer['Metadaten']);
}
else {
$metadataStr .= "\n";
$t_a = "\t\n\t\t\n\t\t\t";
$t_b = "\n\t\t \n\t\t\n\t\t\t";
$t_c = "\n\t\t \n\t \n";
$keys = array_keys($layer);
for ($j=0; $j 0";
$v = array($wms_id);
$t = array('i');
$res = db_prep_query($sql,$v,$t);
$i=0;
$layerArray = array();
while ($row = db_fetch_array($res)) {
$layerArray[$i] = array();
$layerArray[$i]['Titel'] = $row['layer_title'];
$layerArray[$i]['id'] = $row['layer_id'];
$i++;
}
$metadataStr .= "Ebenen ";
for ($i=0; $i0) $metadataStr .= ", ";
$metadataStr .= "" . $layerArray[$i]['Titel'] . " ";
}
}
$metadataStr .= " ";
$resdir = TMPDIR;
$kml_id=md5(uniqid(rand(), true));
//dbselect for generate KML
$sql_kml = "select wms.wms_getmap, wms.wms_version, layer.layer_name,layer.layer_title, layer_epsg.minx,layer_epsg.miny,layer_epsg.maxx,layer_epsg.maxy from wms, layer, layer_epsg, wms_format where layer.layer_id=$1 and layer.fkey_wms_id=wms.wms_id and layer.layer_id=layer_epsg.fkey_layer_id and layer_epsg.epsg='EPSG:4326' and wms.wms_id=wms_format.fkey_wms_id and wms_format.data_format like '%image/png%' LIMIT 1";
$v_kml = array($layer_id);
$t_kml = array('i');
$res_kml = db_prep_query($sql_kml, $v_kml, $t_kml);
$row_kml = db_fetch_array($res_kml);
generateKML($kml_id,$resdir,$row_kml['wms_getmap'],$row_kml['wms_version'],$row_kml['layer_name'],$row_kml['layer_title'],$row_kml['maxy'],$row_kml['miny'],$row_kml['maxx'],$row_kml['minx']);
//export KML
$metadataStr .= "Weitere Schnittstellen ";
$metadataStr .= "KML (Keyhole Markup Language) ";
$user = new User();
//
// Monitoring is only available if the user is allowed to access this service
//
if ($user->isLayerAccessible($layer['ID'])) {
if ($subscribe === 1) {
$user->addSubscription($layer['WMS ID']);
}
else if ($subscribe === 0) {
$user = new User();
$user->cancelSubscription($layer['WMS ID']);
}
$currentUser = new User();
$is_subscribed = $currentUser->hasSubscription($wms_id);
$is_public = $currentUser->isPublic();
//show abo function to registred and authorized users
if ($is_subscribed && !$is_public) {
$metadataStr .= " Abo " .
"" .
_mb("Monitoring Abo löschen") . " ";
}
else if (!$is_subscribed && !$is_public) {
$metadataStr .= "Abo " .
"" .
_mb("Monitoring abonnieren") . " ";
}
}
//if service is secured
if ($secured=true){
$slink=HTTP_AUTH_PROXY."/".$layer_id."?REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS";
echo "Abgesicherte Verbindung Secured Capabilities-Dokument ";
}
$metadataStr .= "
\n";
$metadataStr .= '';
echo $metadataStr;
}
?>