[Mapbender-commits] r9558 - trunk/mapbender/http/classes

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Aug 11 03:09:47 PDT 2016


Author: armin11
Date: 2016-08-11 03:09:47 -0700 (Thu, 11 Aug 2016)
New Revision: 9558

Modified:
   trunk/mapbender/http/classes/class_administration.php
   trunk/mapbender/http/classes/class_wms.php
Log:
Possibility to handle inheritance of dimension elements for wms layer

Modified: trunk/mapbender/http/classes/class_administration.php
===================================================================
--- trunk/mapbender/http/classes/class_administration.php	2016-08-11 10:08:40 UTC (rev 9557)
+++ trunk/mapbender/http/classes/class_administration.php	2016-08-11 10:09:47 UTC (rev 9558)
@@ -1015,10 +1015,40 @@
                 return $layer_id_array;
         }
 
+	function getParentLayers($wms_id, $layer_id){
+		//build tree
+		$parent_layer_srs_sql = "SELECT layer_id, layer_pos, layer_parent FROM layer WHERE fkey_wms_id = $1";
+		$v = array($wms_id);
+		$t = array('i');
+		$res = db_prep_query($parent_layer_srs_sql, $v, $t);
+		while ($layerTree = db_fetch_array($res)) {
+			$layerTreeArray['layer_id'][] = $layerTree['layer_id'];
+			$layerTreeArray['layer_pos'][] = $layerTree['layer_pos'];
+			$layerTreeArray['layer_parent'][] = $layerTree['layer_parent'];
+		}
+		$rootLayerFound = false;
+		$layerStructure = array();
+		$searchLayerId = $layer_id;
+		while ($rootLayerFound == false) {
+			$layerStructure[] = $searchLayerId; //pull only parent layerIds
+			$key = array_search($searchLayerId, $layerTreeArray['layer_id']);
+			if (!$key) {
+				$rootLayerFound = true;
+			} else {
+				$parent = $layerTreeArray['layer_parent'][$key];
+				if ($parent == null || $parent == '') {
+					$rootLayerFound = true;
+				} else {
+					$parentId = $layerTreeArray['layer_id'][array_search($parent, $layerTreeArray['layer_pos'])];
+					$searchLayerId = $parentId;
+				}
+			}
+		}
+		//remove first entry 
+		unset($layerStructure[0]);
+		return array_values($layerStructure);
+	}
 
-
-
-
 	function getWmsOwner($wms_id){
 		$sql = "SELECT fkey_gui_id FROM gui_wms WHERE fkey_wms_id = $1 GROUP BY fkey_gui_id";
 		$v = array($wms_id);

Modified: trunk/mapbender/http/classes/class_wms.php
===================================================================
--- trunk/mapbender/http/classes/class_wms.php	2016-08-11 10:08:40 UTC (rev 9557)
+++ trunk/mapbender/http/classes/class_wms.php	2016-08-11 10:09:47 UTC (rev 9558)
@@ -1076,10 +1076,6 @@
 					if (isset($element['attributes']['unitSymbol']) && $element['attributes']['unitSymbol'] !== "") {
 						$this->objLayer[$cnt_layer]->layer_dimension[$cnt_dimension]->unitSymbol = $element['attributes']['unitSymbol'];
 					}
-					/*if (isset($element['attributes']['unitSymbol']) && $element['attributes']['unitSymbol'] !== "") {
-						$this->objLayer[$cnt_layer]->layer_dimension[$cnt_dimension]->unitSymbol = $element['attributes']['unitSymbol'];
-					}*/
-					
 					switch ($this->wms_version) {
 						case "1.1.1":
 							//$this->objLayer[$cnt_layer]->layer_dimension[$cnt_dimension]->units = $element['attributes']['units'];
@@ -1094,8 +1090,6 @@
 									$this->objLayer[$cnt_layer]->layer_dimension[$cnt_dimension]->{$optionalElement} = $element['attributes'][$optionalElement];
 								}
 							}
-							
-							//$this->objLayer[$cnt_layer]->layer_dimension[] =
 							break; 
 					}
 				}
@@ -1106,7 +1100,6 @@
 						//check for position of dimension element with same name
 						$posDimensionName = 0;
 						foreach ($this->objLayer[$cnt_layer]->layer_dimension as $layerDimension) {
-							$e = new mb_exception("test name: ".$layerDimension->name);
 							if ($layerDimension->name == $element['attributes']['name']) {
 								
 								break;
@@ -1129,7 +1122,6 @@
 				continue;
 			}
 		}
-
 		//test if there are double layer names! - if so give a reasonable feedback to the users!
 		//create array of layer_names:
 		foreach ($this->objLayer as $layer) {
@@ -2441,7 +2433,7 @@
 		$t = array('i');
 		$res = db_prep_query($sql,$v,$t);
 		for($j=0; $j<count($this->objLayer[$i]->layer_dimension);$j++){
-			$sql = "INSERT INTO layer_dimension (fkey_layer_id, name, units, unitSymbol,\"default\", multipleValues, nearestValue, current, extent) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9);";
+			$sql = "INSERT INTO layer_dimension (fkey_layer_id, name, units, unitSymbol,\"default\", multipleValues, nearestValue, current, extent, inherited) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, false);";
 			$v = array($this->objLayer[$i]->db_id,
 			$this->objLayer[$i]->layer_dimension[$j]->name, $this->objLayer[$i]->layer_dimension[$j]->units, $this->objLayer[$i]->layer_dimension[$j]->unitSymbol, $this->objLayer[$i]->layer_dimension[$j]->default, $this->objLayer[$i]->layer_dimension[$j]->multipleValues, $this->objLayer[$i]->layer_dimension[$j]->nearestValue, $this->objLayer[$i]->layer_dimension[$j]->current, $this->objLayer[$i]->layer_dimension[$j]->extent);
 			$t = array('i','s','s','s','s','s','s','s','s');
@@ -2450,6 +2442,13 @@
 				db_rollback();	
 			}
 		}
+		//do the things for the parent layers
+		//get parent layer
+		$admin = new administration();
+		$layerIdArray = $admin->getParentLayers($this->wms_id, $this->objLayer[$i]->db_id);
+		//insert dimensions from parent layers
+		$sql = "INSERT INTO layer_dimension (fkey_layer_id, name, units, unitSymbol,\"default\", multipleValues, nearestValue, current, extent, inherited) SELECT ".$this->objLayer[$i]->db_id." AS fkey_layer_id, name, units, unitSymbol,\"default\", multipleValues, nearestValue, current, extent, true as inherited FROM layer_dimension WHERE fkey_layer_id IN (".implode(",",$layerIdArray).") AND inherited IS FALSE";
+		$res = db_query($sql);
 	}
 	function insertLayerEPSG($i) {
 		//$currentSrsArray = array();



More information about the Mapbender_commits mailing list