[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