[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