[: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\n\t\n"; $keys = array_keys($layer); for ($j=0; $j0) $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 .= ""; } else if (!$is_subscribed && !$is_public) { $metadataStr .= ""; } } //if service is secured if ($secured=true){ $slink=HTTP_AUTH_PROXY."/".$layer_id."?REQUEST=GetCapabilities&VERSION=1.1.1&SERVICE=WMS"; echo ""; } $metadataStr .= "
\n\t\t\t"; $t_b = "\n\t\t\n\t\t\t"; $t_c = "\n\t\t
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") . "
Abo" . "" . _mb("Monitoring abonnieren") . "
Abgesicherte VerbindungSecured Capabilities-Dokument
\n"; $metadataStr .= ''; echo $metadataStr; } ?>