getGuisByPermission($_SESSION["mb_user_id"],true); $mywms = $n->getWmsByOwnGuis($myguis); $sql = "SELECT * FROM wms WHERE wms_owsproxy = $1"; $v = array($wms); $t = array("s"); $res = db_prep_query($sql, $v, $t); if($row = db_fetch_array($res)){ $wms_id = $row["wms_id"]; $wms_getcapabilities = $row["wms_getcapabilities"]; $wms_getmap = $row["wms_getmap"]; $wms_getfeatureinfo = $row["wms_getfeatureinfo"]; $wms_getcapabilities_doc = $row["wms_getcapabilities_doc"]; } else{ throwE(array("No wms data available.")); die(); } if(!in_array($wms_id, $mywms)){ throwE(array("Permission denied."," -> ".$wms_id, implode(",", $mywms))); die(); } /************* prepare and send the response ************/ switch (strtolower($request)) { case 'getcapabilities': $or = $n->checkURL($row["wms_getcapabilities"]); $or = completeURL($or); getCapabilities($or); break; case 'getfeatureinfo': $or = $n->checkURL($row["wms_getfeatureinfo"]); $or = completeURL($or); getFeatureInfo($or); break; default: $or = $n->checkURL($row["wms_getcapabilities"]); $reqParams["layers"] = checkLayerPermission($layers); $or = completeURL($or); getMap($or); } /*********************************************************/ function throwE($e){ global $format, $imageformats; if(in_array($format,$imageformats)){ throwImage($e); } else{ throwText($e); } } function throwImage($e){ global $width,$height; $image = imagecreate($width,$height); $transparent = ImageColorAllocate($image,155,155,155); ImageFilledRectangle($image,0,0,$width,$height,$transparent); imagecolortransparent($image, $transparent); $text_color = ImageColorAllocate ($image, 233, 14, 91); for($i=0; $i 0){ $url .= "&"; } $url .= $mykeys[$i]."=".$reqParams[$mykeys[$i]]; } return $url; } function removeQM($t){ if(strpos($t,"?") === 0){ $t = substr($t,1); } return $t; } function getMap($or){ global $format; if($format == 'image/png'){header("Content-Type: image/png");} if($format == 'image/jpeg' || $format == 'image/jpg'){header("Content-Type: image/jpeg");} if($format == 'image/gif'){header("Content-Type: image/gif");} echo getDocumentContent($or); } function getFeatureInfo($url){ global $info_format; header("Content-Type: ".$info_format); echo getDocumentContent($url); } function getCapabilities($url){ global $wms_getcapabilities,$wms_getmap,$wms_getfeatureinfo,$wms_getcapabilities_doc; global $sid,$wms; $t = array(htmlentities($wms_getcapabilities),htmlentities($wms_getmap),htmlentities($wms_getfeatureinfo)); $new = OWSPROXY ."/". $sid ."/".$wms."?"; $r = str_replace($t,$new,$wms_getcapabilities_doc); header("Content-Type: application/xml"); echo $r; } function checkLayerPermission($l){ global $n,$wms_id; $myl = split(",",$l); $r = array(); foreach($myl as $mysl){ if($n->getLayerPermission($wms_id, $mysl, $_SESSION["mb_user_id"]) === true){ array_push($r, $mysl); } } $ret = implode(",",$r); return $ret; } function getDocumentContent($url){ $d = new connector($url); return $d->file; } ?>