[Mapbender-commits] r6951 - trunk/mapbender/http/classes
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Tue Sep 28 05:23:24 EDT 2010
Author: christoph
Date: 2010-09-28 09:23:24 +0000 (Tue, 28 Sep 2010)
New Revision: 6951
Modified:
trunk/mapbender/http/classes/class_wmc.php
trunk/mapbender/http/classes/class_wms.php
Log:
http://trac.osgeo.org/mapbender/ticket/707
Modified: trunk/mapbender/http/classes/class_wmc.php
===================================================================
--- trunk/mapbender/http/classes/class_wmc.php 2010-09-27 18:13:36 UTC (rev 6950)
+++ trunk/mapbender/http/classes/class_wmc.php 2010-09-28 09:23:24 UTC (rev 6951)
@@ -1089,7 +1089,7 @@
public function mergeWmsArray ($wmsArray) {
if (func_num_args() > 1) {
$options = func_get_arg(1);
- $this->mainMap->mergeWmsArray($wmsArray, $options);
+ return $this->mainMap->mergeWmsArray($wmsArray, $options);
}
return $this->mainMap->mergeWmsArray($wmsArray);
}
Modified: trunk/mapbender/http/classes/class_wms.php
===================================================================
--- trunk/mapbender/http/classes/class_wms.php 2010-09-27 18:13:36 UTC (rev 6950)
+++ trunk/mapbender/http/classes/class_wms.php 2010-09-28 09:23:24 UTC (rev 6951)
@@ -370,30 +370,51 @@
$e = new mb_notice("class_wms.php: merge(): parameter is an EMPTY array.");
return array();
}
-
+
$newWmsArray = array();
-
+
while (count($wmsArray) > 0) {
$currentWms = array_pop($wmsArray);
-
- $isNewWms = true;
+$isNewWms = true;
+
if (get_class($currentWms) != "wms") {
$e = new mb_notice("class_wms.php: merge(): current WMS is not a WMS object, but a " . get_class($currentWms));
}
else {
+ $index = null;
for ($i = 0; $i < count($newWmsArray) && $isNewWms; $i++) {
if ($currentWms->equals($newWmsArray[$i])) {
$isNewWms = false;
+ $index = $i;
}
}
if ($isNewWms) {
$e = new mb_notice("adding WMS " . $currentWms);
- array_push($newWmsArray, $currentWms);
+ $newWmsArray[]= $currentWms;
}
else {
- //newWmsArray contains currentWms
- // --> TODO: check which layers have to be merged into the existing WMS
+ $existingWms = $newWmsArray[$index];
+
+ $len = count($currentWms->objLayer);
+ for ($i = 0; $i < $len; $i++) {
+ $currentWmsLayer = $currentWms->objLayer[$i];
+ $found = false;
+ $lenExist = count($existingWms->objLayer);
+ for ($j = 0; $j < $lenExist; $j++) {
+ $existingWmsLayer = $existingWms->objLayer[$j];
+ if ($currentWmsLayer->equals($existingWmsLayer)) {
+ $found = true;
+ break;
+ }
+ if ($existingWmsLayer->layer_pos > $currentWmsLayer->layer_pos) {
+ break;
+ }
+ }
+ if (!$found) {
+ array_splice($existingWms->objLayer, $j, 0, array($currentWmsLayer));
+ }
+ }
}
}
}
@@ -412,7 +433,7 @@
}
return false;
}
-
+
public function __toString () {
return strval($this->wms_title);
}
@@ -2784,6 +2805,13 @@
//var_dump($this);
}
+ public function equals ($layer) {
+ if (is_numeric($this->layer_uid) && $this->layer_uid === $layer->layer_uid) {
+ return true;
+ }
+ return false;
+ }
+
public static function getLayerMetadataUrl ($layerId) {
return preg_replace(
"/(.*)frames\/login.php/",
@@ -2843,4 +2871,4 @@
return $parents;
}
}
-?>
+?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list