[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