[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