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

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Nov 11 08:18:30 EST 2009


Author: kmq
Date: 2009-11-11 08:18:29 -0500 (Wed, 11 Nov 2009)
New Revision: 4972

Modified:
   trunk/mapbender/http/classes/class_wmc.php
Log:
save keywords into WMC document when saving

Modified: trunk/mapbender/http/classes/class_wmc.php
===================================================================
--- trunk/mapbender/http/classes/class_wmc.php	2009-11-11 12:27:51 UTC (rev 4971)
+++ trunk/mapbender/http/classes/class_wmc.php	2009-11-11 13:18:29 UTC (rev 4972)
@@ -360,6 +360,45 @@
 		
 			$overwrite  = ($user->isPublic())? false: $overwrite;
 		
+			//put keywords into Document
+			try {
+				$WMCDoc = DOMDocument::loadXML($this->toXml());
+			} 
+			catch (Exception $E) {
+				new mb_exception("WMC XML is broken.");
+			}   
+
+			$NewDoc = new DOMDocument();
+		   
+			$xpath = new DOMXPath($WMCDoc);
+			$xpath->registerNamespace("wmc","http://www.opengis.net/context");
+			$xpath->registerNamespace("mapbender","http://www.mapbender.org/context");
+			$xpath->registerNamespace("xlink","http://www.w3.org/1999/xlink");
+
+			$query_KeywordList = "/wmc:ViewContext/wmc:General/wmc:KeywordList";
+			$query_general = "/wmc:ViewContext/wmc:General";
+			$DocKeywordLists = $xpath->query($query_KeywordList);
+			// we just use a single <general> element
+			
+			$NewKeywordList = new DOMElement('KeywordList','','http://opengis.net/context');
+			$NewDoc->appendChild($NewKeywordList);
+	 		foreach($this->keyword as $keyword){
+				$Keyword = new DOMElement('Keyword',$keyword, 'http://opengis.net/context');
+				$NewKeywordList->appendChild($Keyword);
+			}
+			
+			$generalList = $xpath->query($query_general);	
+			$general = $generalList->item(0);
+			if($DocKeywordLists->item(0)){
+				$general->replaceChild($NewKeywordList,$DocKeywordList->item(0));
+			}else{
+				$tmpNode = $WMCDoc->importNode($NewKeywordList,true);
+				$general->appendChild($tmpNode);
+
+			}
+			
+			$this->xml  = $WMCDoc->saveXML();
+			
 			db_begin();
 		
 			if($overwrite) {
@@ -401,47 +440,48 @@
 			}
 			
 		
-			//put keywords intodatabase
 
-			$res = db_prep_query($sql, $v, $t);
-			if (db_error()) {
-				$errMsg = "Error while saving WMC document '" . $this->wmc_title . "': " . db_error();
-				$result["success"] = false;
-				$result["message"] = $errMsg;
-				$e = new mb_exception("mod_insertWMCIntoDB: " . $errMsg);
-			}
-			else {
-				
-				
-				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()){
-						print "AN ERROR: $a";
-					}
-					}	
+			//merging
+
+
+			  //... and database
+
+			  $res = db_prep_query($sql, $v, $t);
+			  if (db_error()) {
+				  $errMsg = "Error while saving WMC document '" . $this->wmc_title . "': " . db_error();
+				  $result["success"] = false;
+				  $result["message"] = $errMsg;
+				  $e = new mb_exception("mod_insertWMCIntoDB: " . $errMsg);
+			  }
+			  else {
 				  
-					$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()){
-						print "AN ERROR INST: $a";
-					}
-				
-				}
-	
-				$result["success"] = true;
-				$msg = "WMC document '" . $this->wmc_title . "' has been saved.";
-				$result["message"] = $msg;
-				$e = new mb_notice("mod_insertWMCIntoDB: WMC  '" . $this->wmc_title . "' saved successfully.");
-			}
+				  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()){
+					  }
+				  
+				  }
+	  
+				  $result["success"] = true;
+				  $msg = "WMC document '" . $this->wmc_title . "' has been saved.";
+				  $result["message"] = $msg;
+				  $e = new mb_notice("mod_insertWMCIntoDB: WMC  '" . $this->wmc_title . "' saved successfully.");
+			  }
 		}
 		else {
 			$result["success"] = false;



More information about the Mapbender_commits mailing list