[Mapbender-commits] r2913 - branches/2.5/owsproxy/http
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Sep 4 08:37:00 EDT 2008
Author: astrid_emde
Date: 2008-09-04 08:37:00 -0400 (Thu, 04 Sep 2008)
New Revision: 2913
Modified:
branches/2.5/owsproxy/http/index.php
Log:
case 'getmap' || 'map' added 'map' to support WMS Version 1.0.0
Modified: branches/2.5/owsproxy/http/index.php
===================================================================
--- branches/2.5/owsproxy/http/index.php 2008-09-04 08:32:27 UTC (rev 2912)
+++ branches/2.5/owsproxy/http/index.php 2008-09-04 12:37:00 UTC (rev 2913)
@@ -2,7 +2,7 @@
# $Id$
# http://www.mapbender.org/index.php/Owsproxy
# Module maintainer Uli
-# Copyright (C) 2002 CCGIS
+# Copyright (C) 2002 CCGIS
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@
$con = db_connect(DBSERVER,OWNER,PW);
db_select_db(DB,$con);
-
+
$postdata = $HTTP_RAW_POST_DATA;
$owsproxyService = $_REQUEST['wms']; //ToDo: change this to 'service' in the apache url-rewriting
@@ -40,506 +40,506 @@
$reqParams = $query->getRequestParams();
$notice = new mb_notice("owsproxy id:".$query->getOwsproxyServiceId());
-
+
// check session
session_id($_REQUEST["sid"]);
session_start();
if(!$_SESSION['mb_user_id']){
- $notice = new mb_notice("Permission denied");
- throwE("Permission denied");
- die();
+ $notice = new mb_notice("Permission denied");
+ throwE("Permission denied");
+ die();
}
//if($_SESSION['mb_user_ip'] != $_SERVER['REMOTE_ADDR']){
-// throwE(array("No session data available.","Permission denied.","Please authenticate."));
-// die();
+// throwE(array("No session data available.","Permission denied.","Please authenticate."));
+// die();
//}
/************* workflow ************/
-$n = new administration();
+$n = new administration();
switch (strtolower($reqParams['request'])) {
- case 'getcapabilities':
- $arrayOnlineresources = checkWmsPermission($query->getOwsproxyServiceId());
- $query->setOnlineResource($arrayOnlineresources['wms_getcapabilities']);
- $request = $query->getRequest();
- getCapabilities($request);
- break;
- case 'getfeatureinfo':
- $arrayOnlineresources = checkWmsPermission($query->getOwsproxyServiceId());
- $query->setOnlineResource($arrayOnlineresources['wms_getfeatureinfo']);
- $request = $query->getRequest();
- getFeatureInfo($request);
- break;
- case 'getmap':
- $arrayOnlineresources = checkWmsPermission($owsproxyService);
- $query->setOnlineResource($arrayOnlineresources['wms_getmap']);
- $layers = checkLayerPermission($arrayOnlineresources['wms_id'],$reqParams['layers']);
- if($layers===""){
- throwE("Permission denied");
- die();
- }
- $query->setParam("layers",$layers);
- $request = $query->getRequest();
- getImage($request);
- break;
- case 'getlegendgraphic':
- $url = getLegendUrl($query->getOwsproxyServiceId());
- getImage($url);
- break;
- case 'external':
- getExternalRequest($query->getOwsproxyServiceId());
- break;
- case 'getfeature':
- $arrayFeatures = array($reqParams['typename']);
- $arrayOnlineresources = checkWfsPermission($query->getOwsproxyServiceId(), $arrayFeatures);
- $query->setOnlineResource($arrayOnlineresources['wfs_getfeature']);
- $request = $query->getRequest();
- $request = stripslashes($request);
- getFeature($request);
- break;
- // case wfs transaction (because of raw POST the request param is empty)
- case '':
- $arrayFeatures = getWfsFeaturesFromTransaction($HTTP_RAW_POST_DATA);
- $arrayOnlineresources = checkWfsPermission($query->getOwsproxyServiceId(), $arrayFeatures);
- $query->setOnlineResource($arrayOnlineresources['wfs_transaction']);
- $request = $query->getRequest();
- doTransaction($request, $HTTP_RAW_POST_DATA);
- break;
- default:
-
+ case 'getcapabilities':
+ $arrayOnlineresources = checkWmsPermission($query->getOwsproxyServiceId());
+ $query->setOnlineResource($arrayOnlineresources['wms_getcapabilities']);
+ $request = $query->getRequest();
+ getCapabilities($request);
+ break;
+ case 'getfeatureinfo':
+ $arrayOnlineresources = checkWmsPermission($query->getOwsproxyServiceId());
+ $query->setOnlineResource($arrayOnlineresources['wms_getfeatureinfo']);
+ $request = $query->getRequest();
+ getFeatureInfo($request);
+ break;
+ case 'getmap' || 'map':
+ $arrayOnlineresources = checkWmsPermission($owsproxyService);
+ $query->setOnlineResource($arrayOnlineresources['wms_getmap']);
+ $layers = checkLayerPermission($arrayOnlineresources['wms_id'],$reqParams['layers']);
+ if($layers===""){
+ throwE("Permission denied");
+ die();
+ }
+ $query->setParam("layers",$layers);
+ $request = $query->getRequest();
+ getImage($request);
+ break;
+ case 'getlegendgraphic':
+ $url = getLegendUrl($query->getOwsproxyServiceId());
+ getImage($url);
+ break;
+ case 'external':
+ getExternalRequest($query->getOwsproxyServiceId());
+ break;
+ case 'getfeature':
+ $arrayFeatures = array($reqParams['typename']);
+ $arrayOnlineresources = checkWfsPermission($query->getOwsproxyServiceId(), $arrayFeatures);
+ $query->setOnlineResource($arrayOnlineresources['wfs_getfeature']);
+ $request = $query->getRequest();
+ $request = stripslashes($request);
+ getFeature($request);
+ break;
+ // case wfs transaction (because of raw POST the request param is empty)
+ case '':
+ $arrayFeatures = getWfsFeaturesFromTransaction($HTTP_RAW_POST_DATA);
+ $arrayOnlineresources = checkWfsPermission($query->getOwsproxyServiceId(), $arrayFeatures);
+ $query->setOnlineResource($arrayOnlineresources['wfs_transaction']);
+ $request = $query->getRequest();
+ doTransaction($request, $HTTP_RAW_POST_DATA);
+ break;
+ default:
+
}
/*********************************************************/
function throwE($e){
- global $reqParams, $imageformats;
- if(in_array($reqParams['format'],$imageformats)){
- throwImage($e);
- }
- else{
- throwText($e);
- }
-}
+ global $reqParams, $imageformats;
+ if(in_array($reqParams['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<count($e); $i++){
- ImageString ($image, 3, 5, $i*20, $e[$i], $text_color);
- }
- responseImage($image);
+ 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<count($e); $i++){
+ ImageString ($image, 3, 5, $i*20, $e[$i], $text_color);
+ }
+ responseImage($image);
}
function throwText($e){
- echo join(" ", $e);
+ echo join(" ", $e);
}
function responseImage($im){
- global $reqParams;
- $format = $reqParams['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");}
-
- if($format == 'image/png'){imagepng($im);}
- if($format == 'image/jpeg' || $format == 'image/jpg'){imagejpeg($im);}
- if($format == 'image/gif'){imagegif($im);}
+ global $reqParams;
+ $format = $reqParams['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");}
+
+ if($format == 'image/png'){imagepng($im);}
+ if($format == 'image/jpeg' || $format == 'image/jpg'){imagejpeg($im);}
+ if($format == 'image/gif'){imagegif($im);}
}
function completeURL($url){
- global $reqParams;
- $mykeys = array_keys($reqParams);
- for($i=0; $i<count($mykeys);$i++){
- if($i > 0){ $url .= "&"; }
- $url .= $mykeys[$i]."=".urlencode($reqParams[$mykeys[$i]]);
- }
- return $url;
+ global $reqParams;
+ $mykeys = array_keys($reqParams);
+ for($i=0; $i<count($mykeys);$i++){
+ if($i > 0){ $url .= "&"; }
+ $url .= $mykeys[$i]."=".urlencode($reqParams[$mykeys[$i]]);
+ }
+ return $url;
}
-
-/**
- * fetch and returns an image to client
- *
- * @param string the original url of the image to send
- */
+/**
+ * fetch and returns an image to client
+ *
+ * @param string the original url of the image to send
+ */
+
function getImage($or){
- global $reqParams;
- header("Content-Type: ".$reqParams['format']);
- echo getDocumentContent($or);
+ global $reqParams;
+ header("Content-Type: ".$reqParams['format']);
+ echo getDocumentContent($or);
}
/**
* fetchs and returns the content of the FeatureInfo Response
- *
+ *
* @param string the url of the FeatureInfoRequest
* @return string the content of the FeatureInfo document
*/
function getFeatureInfo($url){
- global $info_format;
- //$e = new mb_notice("owsproxy: Try to fetch FeatureInfoRequest: ".$url);
- header("Content-Type: ".$info_format);
- $content = getDocumentContent($url);
- $content = matchUrls($content);
- echo $content;
-}
-
-/**
- * fetchs and returns the content of WFS GetFeature response
- *
- * @param string the url of the GetFeature request
- * @return echo the content of the GetFeature document
- */
-function getFeature($url){
- global $info_format;
-
- header("Content-Type: ".$info_format);
- $content = getDocumentContent($url);
- $content = matchUrls($content);
- echo $content;
-}
-
-/**
- * simulates a post request to host
- *
- * @param string host to send the request to
- * @param string port of host to send the request to
- * @param string method to send data (should be "POST")
- * @param string path on host
- * @param string data to send to host
- * @return string hosts response
- */
-
-function sendToHost($host,$port,$method,$path,$data){
- $buf = '';
- if (empty($method)) $method = 'POST';
- $method = mb_strtoupper($method);
- $fp = fsockopen($host, $port);
- fputs($fp, "$method $path HTTP/1.1\r\n");
- fputs($fp, "Host: $host\r\n");
- fputs($fp,"Content-type: application/xml\r\n");
- fputs($fp, "Content-length: " . strlen($data) . "\r\n");
- fputs($fp, "Connection: close\r\n\r\n");
- if ($method == 'POST') fputs($fp, $data);
- while (!feof($fp)) $buf .= fgets($fp,4096);
- fclose($fp);
- return $buf;
-}
-
-/**
- * get wfs featurenames that are touched by a tansaction request defined in XML $data
- *
- * @param string XML that contains the tansaction request
- * @return array array of touched feature names
- */
-
-function getWfsFeaturesFromTransaction($data){
- $features = array();
- $values = NULL;
- $tags = NULL;
- $parser = xml_parser_create();
- xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
- xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
- xml_parse_into_struct($parser,$data,$values,$tags);
-
- $code = xml_get_error_code ($parser);
- if ($code) {
- $line = xml_get_current_line_number($parser);
- $col = xml_get_current_column_number($parser);
- $mb_exception = new mb_exception("OWSPROXY invalid Tansaction XML: ".xml_error_string($code) . " in line " . $line. " at character ". $col);
- die();
- }
- xml_parser_free($parser);
-
- $insert = false;
- $insertlevel = 0;
- foreach ($values as $element) {
- //features touched by insert
- if(strtoupper($element[tag]) == "WFS:INSERT" && $element[type] == "open"){
- $insert = true;
- $insertlevel = $element[level];
- }
- if($insert && $element[level] == $insertlevel + 1 && $element[type] == "open"){
- array_push($features, $element[tag]);
- }
- if(strtoupper($element[tag]) == "WFS:INSERT" && $element[type] == "close"){
- $insert = false;
- }
- //updated features
- if(strtoupper($element[tag]) == "WFS:UPDATE" && $element[type] == "open"){
- array_push($features, $element[attributes]["typeName"]);
- }
- //deleted features
- if(strtoupper($element[tag]) == "WFS:DELETE" && $element[type] == "open"){
- array_push($features, $element[attributes]["typeName"]);
- }
- }
- return $features;
-}
-
-/**
- * sends the data of WFS Transaction and echos the response
- *
- * @param string url to send the WFS Transaction to
- * @param string WFS Transaction data
- */
-
-function doTransaction($url, $data){
- $arURL = parse_url($url);
- $host = $arURL["host"];
- $port = $arURL["port"];
- if($port == '') $port = 80;
-
- $path = $arURL["path"];
- $method = "POST";
- $result = sendToHost($host,$port,$method,html_entity_decode($path),$data);
-
- //delete header from result
- $result = mb_eregi_replace("^[^<]*", "", $result);
- $result = mb_eregi_replace("[^>]*$", "", $result);
-
- echo $result;
+ global $info_format;
+ //$e = new mb_notice("owsproxy: Try to fetch FeatureInfoRequest: ".$url);
+ header("Content-Type: ".$info_format);
+ $content = getDocumentContent($url);
+ $content = matchUrls($content);
+ echo $content;
}
+/**
+ * fetchs and returns the content of WFS GetFeature response
+ *
+ * @param string the url of the GetFeature request
+ * @return echo the content of the GetFeature document
+ */
+function getFeature($url){
+ global $info_format;
+
+ header("Content-Type: ".$info_format);
+ $content = getDocumentContent($url);
+ $content = matchUrls($content);
+ echo $content;
+}
+
+/**
+ * simulates a post request to host
+ *
+ * @param string host to send the request to
+ * @param string port of host to send the request to
+ * @param string method to send data (should be "POST")
+ * @param string path on host
+ * @param string data to send to host
+ * @return string hosts response
+ */
+
+function sendToHost($host,$port,$method,$path,$data){
+ $buf = '';
+ if (empty($method)) $method = 'POST';
+ $method = mb_strtoupper($method);
+ $fp = fsockopen($host, $port);
+ fputs($fp, "$method $path HTTP/1.1\r\n");
+ fputs($fp, "Host: $host\r\n");
+ fputs($fp,"Content-type: application/xml\r\n");
+ fputs($fp, "Content-length: " . strlen($data) . "\r\n");
+ fputs($fp, "Connection: close\r\n\r\n");
+ if ($method == 'POST') fputs($fp, $data);
+ while (!feof($fp)) $buf .= fgets($fp,4096);
+ fclose($fp);
+ return $buf;
+}
+
+/**
+ * get wfs featurenames that are touched by a tansaction request defined in XML $data
+ *
+ * @param string XML that contains the tansaction request
+ * @return array array of touched feature names
+ */
+
+function getWfsFeaturesFromTransaction($data){
+ $features = array();
+ $values = NULL;
+ $tags = NULL;
+ $parser = xml_parser_create();
+ xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
+ xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
+ xml_parse_into_struct($parser,$data,$values,$tags);
+
+ $code = xml_get_error_code ($parser);
+ if ($code) {
+ $line = xml_get_current_line_number($parser);
+ $col = xml_get_current_column_number($parser);
+ $mb_exception = new mb_exception("OWSPROXY invalid Tansaction XML: ".xml_error_string($code) . " in line " . $line. " at character ". $col);
+ die();
+ }
+ xml_parser_free($parser);
+
+ $insert = false;
+ $insertlevel = 0;
+ foreach ($values as $element) {
+ //features touched by insert
+ if(strtoupper($element[tag]) == "WFS:INSERT" && $element[type] == "open"){
+ $insert = true;
+ $insertlevel = $element[level];
+ }
+ if($insert && $element[level] == $insertlevel + 1 && $element[type] == "open"){
+ array_push($features, $element[tag]);
+ }
+ if(strtoupper($element[tag]) == "WFS:INSERT" && $element[type] == "close"){
+ $insert = false;
+ }
+ //updated features
+ if(strtoupper($element[tag]) == "WFS:UPDATE" && $element[type] == "open"){
+ array_push($features, $element[attributes]["typeName"]);
+ }
+ //deleted features
+ if(strtoupper($element[tag]) == "WFS:DELETE" && $element[type] == "open"){
+ array_push($features, $element[attributes]["typeName"]);
+ }
+ }
+ return $features;
+}
+
+/**
+ * sends the data of WFS Transaction and echos the response
+ *
+ * @param string url to send the WFS Transaction to
+ * @param string WFS Transaction data
+ */
+
+function doTransaction($url, $data){
+ $arURL = parse_url($url);
+ $host = $arURL["host"];
+ $port = $arURL["port"];
+ if($port == '') $port = 80;
+
+ $path = $arURL["path"];
+ $method = "POST";
+ $result = sendToHost($host,$port,$method,html_entity_decode($path),$data);
+
+ //delete header from result
+ $result = mb_eregi_replace("^[^<]*", "", $result);
+ $result = mb_eregi_replace("[^>]*$", "", $result);
+
+ echo $result;
+}
+
function matchUrls($content){
- if(!session_is_registered("owsproxyUrls")){
- $_SESSION["owsproxyUrls"] = array();
- $_SESSION["owsproxyUrls"]["id"] = array();
- $_SESSION["owsproxyUrls"]["url"] = array();
- }
- $pattern = "/[\"|\'](https*:\/\/[^\"|^\']*)[\"|\']/";
- preg_match_all($pattern,$content,$matches);
- for($i=0; $i<count($matches[1]); $i++){
- $req = $matches[1][$i];
- $id = registerURL($req);
- $extReq = setExternalRequest($id);
- $content = str_replace($req,$extReq,$content);
- }
- return $content;
-}
+ if(!session_is_registered("owsproxyUrls")){
+ $_SESSION["owsproxyUrls"] = array();
+ $_SESSION["owsproxyUrls"]["id"] = array();
+ $_SESSION["owsproxyUrls"]["url"] = array();
+ }
+ $pattern = "/[\"|\'](https*:\/\/[^\"|^\']*)[\"|\']/";
+ preg_match_all($pattern,$content,$matches);
+ for($i=0; $i<count($matches[1]); $i++){
+ $req = $matches[1][$i];
+ $id = registerURL($req);
+ $extReq = setExternalRequest($id);
+ $content = str_replace($req,$extReq,$content);
+ }
+ return $content;
+}
function setExternalRequest($id){
- global $reqParams,$query;
- $extReq = OWSPROXY ."/". $reqParams['sid'] ."/".$id."?request=external";
- return $extReq;
+ global $reqParams,$query;
+ $extReq = OWSPROXY ."/". $reqParams['sid'] ."/".$id."?request=external";
+ return $extReq;
}
function getExternalRequest($id){
- for($i=0; $i<count($_SESSION["owsproxyUrls"]["url"]); $i++){
- if($id == $_SESSION["owsproxyUrls"]["id"][$i]){
- $cUrl = $_SESSION["owsproxyUrls"]["url"][$i];
- $query_string = removeOWSGetParams($_SERVER["QUERY_STRING"]);
- if($query_string != ''){
- $cUrl .= getConjunctionCharacter($cUrl).$query_string;
- }
- $metainfo = get_headers($cUrl,1);
- // just for the stupid InternetExplorer
- header('Pragma: private');
- header('Cache-control: private, must-revalidate');
-
- header("Content-Type: ".$metainfo['Content-Type']);
-
- $content = getDocumentContent($cUrl);
- $content = matchUrls($content);
- echo $content;
- }
- }
+ for($i=0; $i<count($_SESSION["owsproxyUrls"]["url"]); $i++){
+ if($id == $_SESSION["owsproxyUrls"]["id"][$i]){
+ $cUrl = $_SESSION["owsproxyUrls"]["url"][$i];
+ $query_string = removeOWSGetParams($_SERVER["QUERY_STRING"]);
+ if($query_string != ''){
+ $cUrl .= getConjunctionCharacter($cUrl).$query_string;
+ }
+ $metainfo = get_headers($cUrl,1);
+ // just for the stupid InternetExplorer
+ header('Pragma: private');
+ header('Cache-control: private, must-revalidate');
+
+ header("Content-Type: ".$metainfo['Content-Type']);
+
+ $content = getDocumentContent($cUrl);
+ $content = matchUrls($content);
+ echo $content;
+ }
+ }
}
function removeOWSGetParams($query_string){
- $r = preg_replace("/.*request=external&/","",$query_string);
- return $r;
+ $r = preg_replace("/.*request=external&/","",$query_string);
+ return $r;
}
function getConjunctionCharacter($url){
- if(strpos($url,"?")){
- if(strpos($url,"?") == strlen($url)){
- $cchar = "";
- }else if(strpos($url,"&") == strlen($url)){
- $cchar = "";
- }else{
- $cchar = "&";
- }
- }
- if(strpos($url,"?") === false){
- $cchar = "?";
- }
- return $cchar;
+ if(strpos($url,"?")){
+ if(strpos($url,"?") == strlen($url)){
+ $cchar = "";
+ }else if(strpos($url,"&") == strlen($url)){
+ $cchar = "";
+ }else{
+ $cchar = "&";
+ }
+ }
+ if(strpos($url,"?") === false){
+ $cchar = "?";
+ }
+ return $cchar;
}
-function registerUrl($url){
- if(!in_array($url,$_SESSION["owsproxyUrls"]["url"])){
- $id = md5($url);
- array_push($_SESSION["owsproxyUrls"]["url"],$url);
- array_push($_SESSION["owsproxyUrls"]["id"], $id);
- }
- else{
- for($i=0; $i<count($_SESSION["owsproxyUrls"]["url"]); $i++){
- if($url == $_SESSION["owsproxyUrls"]["url"][$i]){
- $id = $_SESSION["owsproxyUrls"]["id"][$i];
- }
- }
- }
- return $id;
+function registerUrl($url){
+ if(!in_array($url,$_SESSION["owsproxyUrls"]["url"])){
+ $id = md5($url);
+ array_push($_SESSION["owsproxyUrls"]["url"],$url);
+ array_push($_SESSION["owsproxyUrls"]["id"], $id);
+ }
+ else{
+ for($i=0; $i<count($_SESSION["owsproxyUrls"]["url"]); $i++){
+ if($url == $_SESSION["owsproxyUrls"]["url"][$i]){
+ $id = $_SESSION["owsproxyUrls"]["id"][$i];
+ }
+ }
+ }
+ return $id;
}
function getCapabilities($url){
- global $arrayOnlineresources;
- global $sid,$wms;
- $t = array(htmlentities($arrayOnlineresources["wms_getcapabilities"]),htmlentities($arrayOnlineresources["wms_getmap"]),htmlentities($arrayOnlineresources["$wms_getfeatureinfo"]));
- $new = OWSPROXY ."/". $sid ."/".$wms."?";
- $r = str_replace($t,$new,$arrayOnlineresources["wms_getcapabilities_doc"]);
- header("Content-Type: application/xml");
- echo $r;
-}
-
-/**
- * gets the original url of the requested legend graphic
- *
- * @param string owsproxy md5
- * @return string url to legend graphic
- */
-function getLegendUrl($wms){
- global $reqParams;
-
- //get wms id
- $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))
- $wmsid = $row["wms_id"];
- else{
- throwE(array("No wms data available."));
- die();
- }
-
- //get the url
- $sql = "SELECT layer_style.legendurl ";
- $sql .= "FROM layer_style JOIN layer ";
- $sql .= "ON layer_style.fkey_layer_id = layer.layer_id ";
- $sql .= "WHERE layer.layer_name = $2 AND layer.fkey_wms_id = $1 ";
- $sql .= "AND layer_style.name = $3 AND layer_style.legendurlformat = $4";
-
- $v = array($wmsid, $reqParams['layer'], $reqParams['style'], $reqParams['format']);
- $t = array("i", "s", "s", "s");
-
- $res = db_prep_query($sql, $v, $t);
- if($row = db_fetch_array($res))
- return $row["legendurl"];
- else{
- throwE(array("No legend available."));
- die();
- }
-}
-/**
- * validated access permission on requested wms
- *
- * @param string OWSPROXY md5
- * @return array array with detailed information about requested wms
+ global $arrayOnlineresources;
+ global $sid,$wms;
+ $t = array(htmlentities($arrayOnlineresources["wms_getcapabilities"]),htmlentities($arrayOnlineresources["wms_getmap"]),htmlentities($arrayOnlineresources["$wms_getfeatureinfo"]));
+ $new = OWSPROXY ."/". $sid ."/".$wms."?";
+ $r = str_replace($t,$new,$arrayOnlineresources["wms_getcapabilities_doc"]);
+ header("Content-Type: application/xml");
+ echo $r;
+}
+
+/**
+ * gets the original url of the requested legend graphic
+ *
+ * @param string owsproxy md5
+ * @return string url to legend graphic
*/
+function getLegendUrl($wms){
+ global $reqParams;
+
+ //get wms id
+ $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))
+ $wmsid = $row["wms_id"];
+ else{
+ throwE(array("No wms data available."));
+ die();
+ }
+
+ //get the url
+ $sql = "SELECT layer_style.legendurl ";
+ $sql .= "FROM layer_style JOIN layer ";
+ $sql .= "ON layer_style.fkey_layer_id = layer.layer_id ";
+ $sql .= "WHERE layer.layer_name = $2 AND layer.fkey_wms_id = $1 ";
+ $sql .= "AND layer_style.name = $3 AND layer_style.legendurlformat = $4";
+
+ $v = array($wmsid, $reqParams['layer'], $reqParams['style'], $reqParams['format']);
+ $t = array("i", "s", "s", "s");
+
+ $res = db_prep_query($sql, $v, $t);
+ if($row = db_fetch_array($res))
+ return $row["legendurl"];
+ else{
+ throwE(array("No legend available."));
+ die();
+ }
+}
+/**
+ * validated access permission on requested wms
+ *
+ * @param string OWSPROXY md5
+ * @return array array with detailed information about requested wms
+ */
function checkWmsPermission($wms){
- global $con, $n;
- $myguis = $n->getGuisByPermission($_SESSION["mb_user_id"],true);
- $mywms = $n->getWmsByOwnGuis($myguis);
+ global $con, $n;
+ $myguis = $n->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);
- $service = array();
- if($row = db_fetch_array($res)){
- $service["wms_id"] = $row["wms_id"];
- $service["wms_getcapabilities"] = $row["wms_getcapabilities"];
- $service["wms_getmap"] = $row["wms_getmap"];
- $service["wms_getfeatureinfo"] = $row["wms_getfeatureinfo"];
- $service["wms_getcapabilities_doc"] = $row["wms_getcapabilities_doc"];
- }
- if(!$row || count($mywms) == 0){
- throwE(array("No wms data available."));
- die();
- }
-
- if(!in_array($service["wms_id"], $mywms)){
- throwE(array("Permission denied."," -> ".$service["wms_id"], implode(",", $mywms)));
- die();
- }
- return $service;
-}
-/**
- * validates the access permission by getting the appropriate wfs_conf
- * to each feature requested and check the wfs_conf permission
- *
- * @param string owsproxy md5
- * @param array array of requested featuretype names
- * @return array array with detailed information on reqested wfs
- */
-function checkWfsPermission($wfsOws, $features){
- global $con, $n;
- $myconfs = $n->getWfsConfByPermission($_SESSION["mb_user_id"]);
-
- //check if we know the features requested
- if(count($features) == 0){
- throwE(array("No wfs_feature data available."));
- die();
- }
-
- //get wfs
- $sql = "SELECT * FROM wfs WHERE wfs_owsproxy = $1";
- $v = array($wfsOws);
- $t = array("s");
- $res = db_prep_query($sql, $v, $t);
- $service = array();
- if($row = db_fetch_array($res)){
- $service["wfs_id"] = $row["wfs_id"];
- $service["wfs_getcapabilities"] = $row["wfs_getcapabilities"];
- $service["wfs_getfeature"] = $row["wfs_getfeature"];
- $service["wfs_describefeaturetype"] = $row["wfs_describefeaturetype"];
- $service["wfs_transaction"] = $row["wfs_transaction"];
- $service["wfs_getcapabilities_doc"] = $row["wfs_getcapabilities_doc"];
- }
- else{
- throwE(array("No wfs data available."));
- die();
- }
-
- foreach($features as $feature){
-
- //get appropriate wfs_conf
- $sql = "SELECT wfs_conf.wfs_conf_id FROM wfs_conf ";
- $sql.= "JOIN wfs_featuretype ";
- $sql.= "ON wfs_featuretype.featuretype_id = wfs_conf.fkey_featuretype_id ";
- $sql.= "WHERE wfs_featuretype.featuretype_name = $2 ";
- $sql.= "AND wfs_featuretype.fkey_wfs_id = $1";
- $v = array($service["wfs_id"], $feature);
- $t = array("i","s");
- $res = db_prep_query($sql, $v, $t);
- if(!($row = db_fetch_array($res))){
- $notice = new mb_notice("Permissioncheck failed no wfs conf for wfs ".$service["wfs_id"]." with feturetype ".$feature);
- throwE(array("No wfs_conf data for featuretype ".$feature));
- die();
- }
- $conf_id = $row["wfs_conf_id"];
-
- //check permission
- if(!in_array($conf_id, $myconfs)){
- $notice = new mb_notice("Permissioncheck failed:".$conf_id." not in ".implode(",", $myconfs));
- throwE(array("Permission denied."," -> ".$conf_id, implode(",", $myconfs)));
- die();
- }
- }
-
- return $service;
-}
+ $sql = "SELECT * FROM wms WHERE wms_owsproxy = $1";
+ $v = array($wms);
+ $t = array("s");
+ $res = db_prep_query($sql, $v, $t);
+ $service = array();
+ if($row = db_fetch_array($res)){
+ $service["wms_id"] = $row["wms_id"];
+ $service["wms_getcapabilities"] = $row["wms_getcapabilities"];
+ $service["wms_getmap"] = $row["wms_getmap"];
+ $service["wms_getfeatureinfo"] = $row["wms_getfeatureinfo"];
+ $service["wms_getcapabilities_doc"] = $row["wms_getcapabilities_doc"];
+ }
+ if(!$row || count($mywms) == 0){
+ throwE(array("No wms data available."));
+ die();
+ }
+ if(!in_array($service["wms_id"], $mywms)){
+ throwE(array("Permission denied."," -> ".$service["wms_id"], implode(",", $mywms)));
+ die();
+ }
+ return $service;
+}
+/**
+ * validates the access permission by getting the appropriate wfs_conf
+ * to each feature requested and check the wfs_conf permission
+ *
+ * @param string owsproxy md5
+ * @param array array of requested featuretype names
+ * @return array array with detailed information on reqested wfs
+ */
+function checkWfsPermission($wfsOws, $features){
+ global $con, $n;
+ $myconfs = $n->getWfsConfByPermission($_SESSION["mb_user_id"]);
+
+ //check if we know the features requested
+ if(count($features) == 0){
+ throwE(array("No wfs_feature data available."));
+ die();
+ }
+
+ //get wfs
+ $sql = "SELECT * FROM wfs WHERE wfs_owsproxy = $1";
+ $v = array($wfsOws);
+ $t = array("s");
+ $res = db_prep_query($sql, $v, $t);
+ $service = array();
+ if($row = db_fetch_array($res)){
+ $service["wfs_id"] = $row["wfs_id"];
+ $service["wfs_getcapabilities"] = $row["wfs_getcapabilities"];
+ $service["wfs_getfeature"] = $row["wfs_getfeature"];
+ $service["wfs_describefeaturetype"] = $row["wfs_describefeaturetype"];
+ $service["wfs_transaction"] = $row["wfs_transaction"];
+ $service["wfs_getcapabilities_doc"] = $row["wfs_getcapabilities_doc"];
+ }
+ else{
+ throwE(array("No wfs data available."));
+ die();
+ }
+
+ foreach($features as $feature){
+
+ //get appropriate wfs_conf
+ $sql = "SELECT wfs_conf.wfs_conf_id FROM wfs_conf ";
+ $sql.= "JOIN wfs_featuretype ";
+ $sql.= "ON wfs_featuretype.featuretype_id = wfs_conf.fkey_featuretype_id ";
+ $sql.= "WHERE wfs_featuretype.featuretype_name = $2 ";
+ $sql.= "AND wfs_featuretype.fkey_wfs_id = $1";
+ $v = array($service["wfs_id"], $feature);
+ $t = array("i","s");
+ $res = db_prep_query($sql, $v, $t);
+ if(!($row = db_fetch_array($res))){
+ $notice = new mb_notice("Permissioncheck failed no wfs conf for wfs ".$service["wfs_id"]." with feturetype ".$feature);
+ throwE(array("No wfs_conf data for featuretype ".$feature));
+ die();
+ }
+ $conf_id = $row["wfs_conf_id"];
+
+ //check permission
+ if(!in_array($conf_id, $myconfs)){
+ $notice = new mb_notice("Permissioncheck failed:".$conf_id." not in ".implode(",", $myconfs));
+ throwE(array("Permission denied."," -> ".$conf_id, implode(",", $myconfs)));
+ die();
+ }
+ }
+
+ return $service;
+}
+
function checkLayerPermission($wms_id,$l){
- global $n, $owsproxyService;
-// $notice = new mb_notice("owsproxy: checkLayerpermission: wms: ".$wms_id.", layer: ".$l);
- $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;
+ global $n, $owsproxyService;
+// $notice = new mb_notice("owsproxy: checkLayerpermission: wms: ".$wms_id.", layer: ".$l);
+ $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;
+ $d = new connector($url);
+ return $d->file;
}
?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list