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

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Fri Mar 16 10:18:25 EDT 2007


Author: christoph
Date: 2007-03-16 10:18:24 -0400 (Fri, 16 Mar 2007)
New Revision: 1231

Modified:
   trunk/mapbender/http/classes/class_wms.php
Log:
fixed bug #16

http://trac.osgeo.org/mapbender/ticket/16

Modified: trunk/mapbender/http/classes/class_wms.php
===================================================================
--- trunk/mapbender/http/classes/class_wms.php	2007-03-16 13:44:25 UTC (rev 1230)
+++ trunk/mapbender/http/classes/class_wms.php	2007-03-16 14:18:24 UTC (rev 1231)
@@ -68,6 +68,7 @@
 	
 		$x = new connector($url);
 		$data = $x->file;
+		
 		if(!$data){
 			$this->wms_status = false;
 			return false;
@@ -807,6 +808,8 @@
 	* this function exports the information from the xml to the mapbender database 
 	*/
 	function writeObjInDB($gui_id){
+		global $con;
+
 		$this->checkObj();
 		db_begin();
 	
@@ -872,6 +875,7 @@
 	    $this->wms_id = $myWMS;
 	}
 	function insertLayer($i,$myWMS){
+		global $con;
 		$sql = "INSERT INTO layer(fkey_wms_id, layer_pos, layer_parent, layer_name, layer_title, ";
 		$sql .= " layer_queryable, layer_minscale, layer_maxscale,layer_dataurl,layer_metadataurl,layer_abstract) ";
 		$sql .= "VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)";
@@ -1064,39 +1068,54 @@
 		}
 	}
 	function insertLayerKeyword($i){
+		global $con;
 		$sql = "DELETE FROM layer_keyword WHERE fkey_layer_id = $1";
 		$v = array($this->objLayer[$i]->db_id);
 		$t = array('i');
 		$res = db_prep_query($sql,$v,$t);
-			
+		
+		
 		$k = $this->objLayer[$i]->layer_keyword;
 		for($j=0; $j<count($k); $j++){
-			$sql = "SELECT keyword_id FROM keyword WHERE keyword = $1";
-			$v = array($this->objLayer[$i]->layer_keyword[$j]);
-			$t = array('s');
-			$res = db_prep_query($sql,$v,$t);
-			if($row = db_fetch_array($res)){
-				$t_layer_id = $row["keyword_id"];	
+			$keyword_id = "";
+			
+			while ($keyword_id == "") {
+				$sql = "SELECT keyword_id FROM keyword WHERE keyword = $1";
+				$v = array($k[$j]);
+				$t = array('s');
+				$res = db_prep_query($sql,$v,$t);
+				$row = db_fetch_array($res);
+				if ($row) {
+					$keyword_id = $row["keyword_id"];	
+				}
+				else {
+					$sql_insertKeyword = "INSERT INTO keyword (keyword)";
+					$sql_insertKeyword .= "VALUES ($1)";
+					$v1 = array($k[$j]);
+					$t1 = array('s');
+					$res_insertKeyword = db_prep_query($sql_insertKeyword,$v1,$t1);
+					if(!$res_insertKeyword){
+						db_rollback();	
+					}
+				}
 			}
-			else if(!$row = db_fetch_array($res)){
-				$sql1 = "INSERT INTO keyword (keyword)";
-				$sql1 .= "VALUES ($1)";
-				$v1 = array($k[$j]);
-				$t1 = array('s');
+
+			// check if layer/keyword combination already exists
+			$sql_layerKeywordExists = "SELECT * FROM layer_keyword WHERE fkey_layer_id = $1 AND fkey_keyword_id = $2";
+			$v = array($this->objLayer[$i]->db_id, $keyword_id);
+			$t = array('i', 'i');
+			$res_layerKeywordExists = db_prep_query($sql_layerKeywordExists, $v, $t);
+			$row = db_fetch_array($res_layerKeywordExists);
+			if (!$row) {
+				$sql1 = "INSERT INTO layer_keyword (fkey_keyword_id,fkey_layer_id)";
+				$sql1 .= "VALUES ($1,$2)";
+				$v1 = array($keyword_id,$this->objLayer[$i]->db_id);
+				$t1 = array('i','i');
 				$res1 = db_prep_query($sql1,$v1,$t1);
-				$t_layer_id = db_insert_id($con,'keyword', 'keyword_id');
 				if(!$res1){
 					db_rollback();	
 				}
 			}
-			$sql1 = "INSERT INTO layer_keyword (fkey_keyword_id,fkey_layer_id)";
-			$sql1 .= "VALUES ($1,$2)";
-			$v1 = array($t_layer_id,$this->objLayer[$i]->db_id);
-			$t1 = array('i','i');
-			$res1 = db_prep_query($sql1,$v1,$t1);
-			if(!$res1){
-				db_rollback();	
-			}
 		}
 	}
 	function updateObjInDB($myWMS){
@@ -1624,5 +1643,4 @@
 		return $s;
 	}
 }
-
-?>
+?>
\ No newline at end of file



More information about the Mapbender_commits mailing list