[Mapbender-commits] r4973 - in trunk/mapbender: http/classes http/php resources/db/pgsql/UTF-8/update

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Nov 11 11:13:04 EST 2009


Author: kmq
Date: 2009-11-11 11:13:03 -0500 (Wed, 11 Nov 2009)
New Revision: 4973

Modified:
   trunk/mapbender/http/classes/class_wmc.php
   trunk/mapbender/http/php/mod_savewmc_server.php
   trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql
Log:
save keywords to database

Modified: trunk/mapbender/http/classes/class_wmc.php
===================================================================
--- trunk/mapbender/http/classes/class_wmc.php	2009-11-11 13:18:29 UTC (rev 4972)
+++ trunk/mapbender/http/classes/class_wmc.php	2009-11-11 16:13:03 UTC (rev 4973)
@@ -100,6 +100,8 @@
 	var $wmc_name;
 	var $wmc_title;
 	var $wmc_abstract;
+	var $wmc_srs;
+	var $wmc_extent;
 	var $wmc_keyword = array();
 	var $wmc_contactposition;
 	var $wmc_contactvoicetelephone;
@@ -403,7 +405,7 @@
 		
 			if($overwrite) {
 		
-	            $findsql = "SELECT fkey_user_id,wmc_title,wmc_timestamp FROM mb_user_wmc WHERE fkey_user_id = $1 AND wmc_title = $2 ORDER BY wmc_timestamp DESC LIMIT 1;";
+	            $findsql = "SELECT fkey_user_id,wmc_title,wmc_timestamp, wmc_id FROM mb_user_wmc WHERE fkey_user_id = $1 AND wmc_title = $2 ORDER BY wmc_timestamp DESC LIMIT 1;";
 	            $v = array($this->userId, administration::convertOutgoingString($this->wmc_title));
 	            $t = array("i","s");
 	        
@@ -417,35 +419,38 @@
 				}
 	
 	            if($row = db_fetch_row($res)) {
-					$sql = "UPDATE mb_user_wmc SET wmc = $1, wmc_timestamp = $2 WHERE fkey_user_id = $3 AND wmc_title=$4 AND wmc_timestamp = $5;";
-					$v = array($this->xml, time(), $this->userId, administration::convertOutgoingString($this->wmc_title),$row[2]);
-					$t = array("s", "s", "i", "s","s");
+					$sql = "UPDATE mb_user_wmc SET wmc = $1, wmc_timestamp = $2, wmc_public = $3, abstract = $4, srs = $5, minx = $6, miny = $7,".
+						" maxx = $8, maxy = $9 WHERE fkey_user_id = $10 AND wmc_title=$11 AND wmc_timestamp = $12;";
+					$v = array($this->xml, time(), $user->isPublic()?1:0, $this->wmc_abstract, $this->wmc_srs, $this->wmc_extent->minx, $this->wmc_extent->minx,
+						 $this->wmc_extent->maxx, $this->wmc_extent->maxy ,$this->userId, administration::convertOutgoingString($this->wmc_title),$row[2]);
+					$t = array("s", "s","i","s","s","i","i","i","i", "i", "s","s");
+					$wmc_DB_ID = $row[3];
 					
 					
 				}
 				else{
 					$sql = "INSERT INTO mb_user_wmc (" . 
-						"wmc_id, fkey_user_id, wmc, wmc_title, wmc_public, wmc_timestamp, wmc_timestamp_create" . 
-						") VALUES ($1, $2, $3, $4, $5, $6, $7)";
-					$v = array($this->wmc_id, $this->userId, $this->xml, administration::convertOutgoingString($this->wmc_title), $user->isPublic()?1:0,time(),time());
-					$t = array("s", "i", "s", "s", "i", "s","s");
+						"wmc_id, fkey_user_id, wmc, wmc_title, wmc_public, wmc_timestamp, wmc_timestamp_create, " . 
+						"abstract, srs, minx, miny, maxx, maxy ".
+						") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13);";
+					$v = array($this->wmc_id, $this->userId, $this->xml, administration::convertOutgoingString($this->wmc_title), $user->isPublic()?1:0,time(),time(),
+						$this->wmc_abstract, $this->wmc_srs, $this->wmc_extent->minx,  $this->wmc_extent->miny, $this->wmc_extent->maxx, $this->wmc_extent->maxy);
+					$t = array("s", "i", "s", "s", "i", "s","s", "s","s","i","i","i", "i");
 				}
 			}
 			else{
 				
-				$sql = "INSERT INTO mb_user_wmc  (wmc_id, fkey_user_id, wmc, wmc_title, wmc_public, wmc_timestamp, wmc_timestamp_create) VALUES ($1, $2, $3, $4, $5, $6, $7)";
-				$v = array($this->wmc_id, $this->userId, $this->xml, administration::convertOutgoingString($this->wmc_title), $user->isPublic()?1:0, time(),time());
-				$t = array("s", "i", "s", "s", "i", "s","s");
+				$sql = "INSERT INTO mb_user_wmc (" . 
+					"wmc_id, fkey_user_id, wmc, wmc_title, wmc_public, wmc_timestamp, wmc_timestamp_create, " . 
+					"abstract, srs, minx, miny, maxx, maxy ".
+					") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13);";
+				$v = array($this->wmc_id, $this->userId, $this->xml, administration::convertOutgoingString($this->wmc_title), $user->isPublic()?1:0, time(),time(),
+						$this->wmc_abstract, $this->wmc_srs, $this->wmc_extent->minx,  $this->wmc_extent->miny, $this->wmc_extent->maxx, $this->wmc_extent->maxy);
+				$t = array("s", "i", "s", "s", "i", "s","s", "s","s","i","i","i", "i");
 				
 			}
 			
 		
-
-			//merging
-
-
-			  //... and database
-
 			  $res = db_prep_query($sql, $v, $t);
 			  if (db_error()) {
 				  $errMsg = "Error while saving WMC document '" . $this->wmc_title . "': " . db_error();
@@ -455,27 +460,37 @@
 			  }
 			  else {
 				  
-				  foreach($this->keyword as $keyword){
+
+			  	foreach($this->keyword as $keyword){
+						
+				
+
 					// if a keyword does not yet exist, create it
-					  $keywordExistsSql = "SELECT keyword FROM keyword WHERE keyword = $1";
-					  $keywordCreateSql = "INSERT INTO keyword (keyword) VALUES($1);"; 
-					  $v = array($keyword);
-					  $t = array("s");
-					  $res =  db_prep_query($keywordExistsSql,$v,$t);
-					  if(!$row = db_fetch_array($res)){
-						  $res = db_prep_query($keywordCreateSql,$v,$t);
-					  if($a = db_error()){
-					  }
-					  }	
-					
-					  $keywordsql = "INSERT into wmc_keyword (fkey_keyword_id,fkey_wmc_id) SELECT keyword_id,$1 FROM keyword WHERE keyword = $2;";
-					  $v = array($this->wmc_id, $keyword);
-					  $t = array("s","s");
-					  $res = db_prep_query($keywordsql, $v, $t);
-					  if($a = db_error()){
-					  }
+			  		$keywordExistsSql = "SELECT keyword FROM keyword WHERE keyword = $1";
+				 	$keywordCreateSql = "INSERT INTO keyword (keyword) VALUES($1);"; 
+				 	$v = array($keyword);
+				 	$t = array("s");
+				 	$res =  db_prep_query($keywordExistsSql,$v,$t);
+				 	if(db_num_rows($res) == 0){
+						$res = db_prep_query($keywordCreateSql,$v,$t);
+				 		if($a = db_error()){
+				 		}
+				 	}	
+			
+					// because the wmc id is created each time a wmc is instantiated $this->wmc_id has nothing to do with the database wmc_id
+					// this is some duct tape to fix it :-(
+					// see also above where wmc_DB_ID is defined if we need to update
+					if(!isset($wmc_DB_ID)) { $wmc_DB_ID = $this->wmc_id; }
+						
+	
+					$keywordsql = "INSERT into wmc_keyword (fkey_keyword_id,fkey_wmc_id) SELECT keyword.keyword_id,$1 FROM keyword WHERE keyword = $2 AND NOT EXISTS (SELECT fkey_wmc_id FROM wmc_keyword	WHERE fkey_wmc_id = $3 );";
+					$v = array($wmc_DB_ID, $keyword,$wmc_DB_ID);
+					$t = array("s","s","s");
+					$res = db_prep_query($keywordsql, $v, $t);
+					if($a = db_error()){
+					}
 				  
-				  }
+				}
 	  
 				  $result["success"] = true;
 				  $msg = "WMC document '" . $this->wmc_title . "' has been saved.";

Modified: trunk/mapbender/http/php/mod_savewmc_server.php
===================================================================
--- trunk/mapbender/http/php/mod_savewmc_server.php	2009-11-11 13:18:29 UTC (rev 4972)
+++ trunk/mapbender/http/php/mod_savewmc_server.php	2009-11-11 16:13:03 UTC (rev 4973)
@@ -40,9 +40,10 @@
 $overwrite = $ajaxResponse->getParameter('overwrite');
 $overwrite = $overwrite == "1" ? True : False;
 
+$json = new Mapbender_JSON(); 
+$mapObject = $json->decode($mapObject);
 
 
-
 // create WMC object
 $wmc = new wmc();
 $wmc->createFromJs($mapObject, $attributes->title, $extensionData);
@@ -59,6 +60,8 @@
 }
 else {
 	// insert WMC into database
+
+	
 	if(isset($attributes->title)) {
 		$attributes->title = trim($attributes->title);
 		if($attributes->title == "") {
@@ -76,8 +79,11 @@
 	}
 
 	// make a keyword array here
-	
 	$wmc->keyword = explode(" ",$attributes->keywords);
+	$wmc->wmc_extent  = $mapObject[0]->extent;
+	$wmc->wmc_srs	  = $mapObject[0]->epsg;
+	$wmc->wmc_abstract = $attributes->abstract;
+
 	$result = $wmc->insert($overwrite);
 	$ajaxResponse->setSuccess(true);
 	$ajaxResponse->setResult($result);

Modified: trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql
===================================================================
--- trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql	2009-11-11 13:18:29 UTC (rev 4972)
+++ trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.6_to_2.7rc1_pgsql_UTF-8.sql	2009-11-11 16:13:03 UTC (rev 4973)
@@ -544,4 +544,4 @@
 	fkey_wmc_id CHARACTER VARYING(20) REFERENCES mb_user_wmc(wmc_id) ON DELETE CASCADE ON UPDATE CASCADE
 );
 ALTER TABLE ONLY wmc_keyword
-     ADD CONSTRAINT pk_cat_keyword PRIMARY KEY (fkey_wmc_id, fkey_keyword_id);
+     ADD CONSTRAINT pk_wmc_keyword PRIMARY KEY (fkey_wmc_id, fkey_keyword_id);



More information about the Mapbender_commits mailing list