[Mapbender-commits] r10387 - in trunk/mapbender: http/classes http_auth/http owsproxy/http

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Fri Jan 17 00:07:44 PST 2020


Author: armin11
Date: 2020-01-17 00:07:43 -0800 (Fri, 17 Jan 2020)
New Revision: 10387

Modified:
   trunk/mapbender/http/classes/class_owsPostQueryParser.php
   trunk/mapbender/http_auth/http/index.php
   trunk/mapbender/owsproxy/http/index.php
Log:
Fix for crazy wfs 2.0.0 spec - see discusion: https://github.com/qgis/QGIS/commit/ccb4c80f8a6d2bb179258f1ffec0dc9a447ca465

Modified: trunk/mapbender/http/classes/class_owsPostQueryParser.php
===================================================================
--- trunk/mapbender/http/classes/class_owsPostQueryParser.php	2020-01-16 15:04:01 UTC (rev 10386)
+++ trunk/mapbender/http/classes/class_owsPostQueryParser.php	2020-01-17 08:07:43 UTC (rev 10387)
@@ -99,13 +99,22 @@
 				}
 				//array of requests that need typenames
 				$typenameRequired = array('getfeature','describefeaturetype');
+				//TODO: look for typenames only in getfeature requests!!!!!! https://github.com/qgis/QGIS/commit/ccb4c80f8a6d2bb179258f1ffec0dc9a447ca465
 				if (in_array(strtolower($this->serviceRequestType), $typenameRequired)) {
 					switch ($this->serviceVersion) {
 						case "2.0.0":
-							$this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeNames');
+                                                        if (strtolower($this->serviceRequestType) == 'describefeaturetype') {
+							    $this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeName');
+							} else {
+							    $this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeNames');
+							}
 							break;
 						case "2.0.2":
-							$this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeNames');
+							if (strtolower($this->serviceRequestType) == 'describefeaturetype') {
+							    $this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeName');
+							} else {
+							    $this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeNames');
+							}
 							break;
 						default:
 							$this->serviceResourceName = $queryNodeList->item(0)->getAttribute('typeName');

Modified: trunk/mapbender/http_auth/http/index.php
===================================================================
--- trunk/mapbender/http_auth/http/index.php	2020-01-16 15:04:01 UTC (rev 10386)
+++ trunk/mapbender/http_auth/http/index.php	2020-01-17 08:07:43 UTC (rev 10387)
@@ -114,10 +114,18 @@
 	$typeNameParameter = "typename"; //lowercase
 	switch ($reqParams['version']) {
 		case "2.0.0":
-			$typeNameParameter = "typenames";
+			if (strtolower($reqParams['request']) == 'describefeaturetype') {
+			    $typeNameParameter = "typename";
+                        } else {
+			    $typeNameParameter = "typenames";
+			}
 			break;
 		case "2.0.2":
-			$typeNameParameter = "typenames";
+			if (strtolower($reqParams['request']) == 'describefeaturetype') {
+			    $typeNameParameter = "typename";
+                        } else {
+			    $typeNameParameter = "typenames";
+			}
 			break;
 		default:
 			$typeNameParameter = "typename";
@@ -447,11 +455,13 @@
         }
         break;
     case 'getfeature':
+//$e = new mb_exception("http_auth/http/index.php - getfeature - requested features: ".$typeNameParameter.": ".json_encode($reqParams[$typeNameParameter]));
 	if (isset($reqParams['storedquery_id']) && $reqParams['storedquery_id'] !== "") {
         	$storedQueryId = $reqParams['storedquery_id'];
         	$arrayOnlineresources = checkWfsStoredQueryPermission($owsproxyString, $storedQueryId, $userId);
 	} else {
 		$arrayFeatures = array($reqParams[$typeNameParameter]);
+//$e = new mb_exception("http_auth/http/index.php - getfeature - check permission: ".json_encode($arrayFeatures));
 		//$e = new mb_exception("".$typeNameParameter.": ".$reqParams[$typeNameParameter]);
         	$arrayOnlineresources = checkWfsPermission($owsproxyString, $arrayFeatures, $userId);
 	}
@@ -486,6 +496,8 @@
         break;
     case 'describefeaturetype':
         $arrayFeatures = array($reqParams[$typeNameParameter]);
+//$e = new mb_exception("http_auth/http/index.php - describefeaturetype - requested features: ".$typeNameParameter.": ".json_encode($reqParams[$typeNameParameter]));
+//really crazy: https://github.com/qgis/QGIS/commit/ccb4c80f8a6d2bb179258f1ffec0dc9a447ca465
         $arrayOnlineresources = checkWfsPermission($owsproxyString, $arrayFeatures, $userId);
         $query->setOnlineResource($arrayOnlineresources['wfs_describefeaturetype']);
         $request = $query->getRequest();

Modified: trunk/mapbender/owsproxy/http/index.php
===================================================================
--- trunk/mapbender/owsproxy/http/index.php	2020-01-16 15:04:01 UTC (rev 10386)
+++ trunk/mapbender/owsproxy/http/index.php	2020-01-17 08:07:43 UTC (rev 10387)
@@ -63,10 +63,18 @@
 	//$typeNameParameter = "typename"; //lowercase
 	switch ($reqParams['version']) {
 		case "2.0.0":
-			$typeNameParameter = "typenames";
+			if (strtolower($reqParams['request']) == 'describefeaturetype') {
+			    $typeNameParameter = "typename";
+                        } else {
+			    $typeNameParameter = "typenames";
+			}
 			break;
 		case "2.0.2":
-			$typeNameParameter = "typenames";
+			if (strtolower($reqParams['request']) == 'describefeaturetype') {
+			    $typeNameParameter = "typename";
+                        } else {
+			    $typeNameParameter = "typenames";
+			}
 			break;
 		default:
 			$typeNameParameter = "typename";



More information about the Mapbender_commits mailing list