[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