[Mapbender-commits] r8323 - in trunk/mapbender: http/classes resources/db/pgsql/UTF-8/update resources/locale/de_DE/LC_MESSAGES

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue Apr 24 05:50:22 EDT 2012


Author: armin11
Date: 2012-04-24 02:50:22 -0700 (Tue, 24 Apr 2012)
New Revision: 8323

Modified:
   trunk/mapbender/http/classes/class_wms.php
   trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.2_to_2.7.3_pgsql_UTF-8.sql
   trunk/mapbender/resources/locale/de_DE/LC_MESSAGES/Mapbender.po
Log:
Add support for more than 1 dataurl tag.

Modified: trunk/mapbender/http/classes/class_wms.php
===================================================================
--- trunk/mapbender/http/classes/class_wms.php	2012-04-19 11:06:12 UTC (rev 8322)
+++ trunk/mapbender/http/classes/class_wms.php	2012-04-24 09:50:22 UTC (rev 8323)
@@ -896,13 +896,15 @@
 					$dataurl = true;
 					$cnt_dataurl++;
 				}
+				if($dataurl && mb_strtoupper($element[tag]) == "FORMAT"){
+					$this->objLayer[$cnt_layer]->layer_dataurl[$cnt_dataurl]->format = $element[value];
+				}
 				if($dataurl && mb_strtoupper($element[tag]) == "ONLINERESOURCE"){
-					$this->objLayer[$cnt_layer]->layer_dataurl[$cnt_dataurl]->href = $element[attributes]["xlink:href"];
+					$this->objLayer[$cnt_layer]->layer_dataurl[$cnt_dataurl]->href = $element[attributes]["xlink:href"]; //TODO exchange the parsing with a real xml parsing cause namespaces will make problems!
 				}
 			    	if(mb_strtoupper($element[tag]) == "DATAURL" && $element[type] == "close"){
 					$dataurl = false;
-			   	}   
-				
+			   	}   				
 				if(mb_strtoupper($element[tag]) == "METADATAURL" && $element[type] == "open"){
 					$metadataurl = true;
 					$cnt_metadataurl++;
@@ -1133,7 +1135,14 @@
 			echo "<hr>";
 			echo "id: <b>".$this->objLayer[$i]->layer_id ."</b> parent: <b>".$this->objLayer[$i]->layer_parent."</b> name: <b>".$this->objLayer[$i]->layer_name;
 			echo "</b> title: <b>".$this->objLayer[$i]->layer_title. "</b> queryable: <b>".$this->objLayer[$i]->layer_queryable."</b> minScale: <b>". $this->objLayer[$i]->layer_minscale."</b> maxScale: <b>".$this->objLayer[$i]->layer_maxscale."</b>";
-			echo "<br>dataurl: <b>".$this->objLayer[$i]->layer_dataurl[0]->href. "</b>";
+			echo "<br>";
+			echo "<br>DataUrl(s):<br>";
+			echo "<table border='1'>";
+			echo "<tr><td>link</td><td>format</td></tr>";
+			for($j=0; $j<count($this->objLayer[$i]->layer_dataurl);$j++){
+				echo "<tr><td>".$this->objLayer[$i]->layer_dataurl[$j]->href."</td><td>".$this->objLayer[$i]->layer_dataurl[$j]->format."</td></tr>";
+			}
+			echo "</table>";
 			echo "<br>MetadataUrls:<br>";
 			echo "<table border='1'>";
 			echo "<tr><td>link</td><td>type</td><td>format</td></tr>";
@@ -1738,7 +1747,7 @@
 			$this->insertLayerKeyword($i);	
 	
 			# insert dataurls
-			#$this->insertLayerDataUrls($i);TODO: in the spec 1.3.0 the schema defines a 1:n relation, but in the table there is only one link possible - maybe we need only this one link
+			$this->insertLayerDataUrls($i); //TODO: in the spec 1.3.0 the schema defines a 1:n relation, but in the table there is only one link possible - maybe we need only this one link
 			# insert metadataurls
 			$this->insertLayerMetadataUrls($i);
 			//update messages for twitter and georss
@@ -1845,6 +1854,7 @@
 			if (!$updateMetadataOnly) {
 				$this->insertLayerEPSG($i);
 			}
+			$this->insertLayerDataUrls($i);
 			$this->insertLayerMetadataUrls($i);
 			# TABLE layer_style for each layer
 			$this->insertLayerStyle($i);
@@ -2295,6 +2305,60 @@
 			}
 		}
 	}
+
+	function insertLayerDataUrls($i){
+		//first delete the old ones - but only those who have been harvested thru caps before!
+		global $con;
+		$sql = "DELETE FROM datalink WHERE datalink_id IN (SELECT datalink_id FROM datalink INNER JOIN";
+		$sql .= " (SELECT * from ows_relation_data WHERE fkey_layer_id = $1) as relation ON ";
+		$sql .= " datalink.datalink_id = relation.fkey_datalink_id AND datalink.datalink_origin = 'capabilities')";
+		$v = array($this->objLayer[$i]->db_id);
+		$t = array('i');
+		$res = db_prep_query($sql,$v,$t);
+		//for each dataurl entry do something
+		for($j=0; $j<count($this->objLayer[$i]->layer_dataurl);$j++){
+			//push single elements into database
+			//generate random number
+			$randomId = new Uuid();
+			$sql = "INSERT INTO datalink (datalink_url, datalink_timestamp, datalink_timestamp_create, datalink_origin, datalink_format, randomid) ";
+			$sql .= "VALUES($1, now(), now(), 'capabilities', $2, $3)";
+			$v = array(	$this->objLayer[$i]->layer_dataurl[$j]->href,
+					$this->objLayer[$i]->layer_dataurl[$j]->format,
+					$randomId	
+			);
+			$t = array('s','s','s');
+			$res = db_prep_query($sql,$v,$t);
+			if(!$res){
+				db_rollback();	
+			}
+			//get datalink_id of record which have been inserted before
+			$sql = <<<SQL
+
+SELECT datalink_id FROM datalink WHERE randomid = $1
+
+SQL;
+			$v = array($randomId);
+			$t = array('s');
+			try {
+				$res = db_prep_query($sql,$v,$t);
+			}
+			catch (Exception $e){
+				$e = new mb_exception(_mb("Cannot get datalink record with following uuid from database: ".$uuid));
+			}
+			if ($res) {
+				$row = db_fetch_assoc($res);
+				$dataLinkId = $row['datalink_id'];
+			}
+			$sql = "INSERT INTO ows_relation_data (fkey_layer_id, fkey_datalink_id) values ($1, $2);";
+			$v = array($this->objLayer[$i]->db_id, $dataLinkId);
+			$t = array('i','i');
+			$res = db_prep_query($sql,$v,$t);
+			if(!$res){
+				db_rollback();	
+			}
+		}
+	}
+
 	function insertLayerMetadataUrls($i){
 		//first delete the old ones - but only those who have been harvested thru caps before!
 		global $con;

Modified: trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.2_to_2.7.3_pgsql_UTF-8.sql
===================================================================
--- trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.2_to_2.7.3_pgsql_UTF-8.sql	2012-04-19 11:06:12 UTC (rev 8322)
+++ trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.2_to_2.7.3_pgsql_UTF-8.sql	2012-04-24 09:50:22 UTC (rev 8323)
@@ -285,5 +285,59 @@
 );
 ALTER TABLE scheduler OWNER TO postgres;
 
+-- Table: ows_relation_data
 
+-- DROP TABLE ows_relation_data;
 
+CREATE TABLE ows_relation_data
+(
+  fkey_datalink_id integer NOT NULL,
+  fkey_layer_id integer,
+  CONSTRAINT ows_relation_data_fkey_layer_id_fkey FOREIGN KEY (fkey_layer_id)
+      REFERENCES layer (layer_id) MATCH SIMPLE
+      ON UPDATE CASCADE ON DELETE CASCADE,
+  CONSTRAINT ows_relation_data_fkey_data_id_fkey FOREIGN KEY (fkey_datalink_id)
+      REFERENCES datalink (datalink_id) MATCH SIMPLE
+      ON UPDATE CASCADE ON DELETE CASCADE
+)
+WITH (
+  OIDS=FALSE
+);
+ALTER TABLE ows_relation_data OWNER TO postgres;
+
+
+-- Column: datalink_format
+
+-- ALTER TABLE datalink DROP COLUMN datalink_format;
+
+ALTER TABLE datalink ADD COLUMN datalink_format character varying(50);
+ALTER TABLE datalink ALTER COLUMN datalink_format SET NOT NULL;
+ALTER TABLE datalink ALTER COLUMN datalink_format SET DEFAULT ''::character varying;
+
+-- Column: datalink_origin
+
+-- ALTER TABLE datalink DROP COLUMN datalink_origin;
+
+ALTER TABLE datalink ADD COLUMN datalink_origin character varying(50);
+ALTER TABLE datalink ALTER COLUMN datalink_origin SET NOT NULL;
+ALTER TABLE datalink ALTER COLUMN datalink_origin SET DEFAULT ''::character varying;
+
+-- Column: randomid
+
+-- ALTER TABLE datalink DROP COLUMN randomid;
+
+ALTER TABLE datalink ADD COLUMN randomid character varying(100);
+
+ALTER TABLE datalink DROP COLUMN datalink_timestamp;
+
+ALTER TABLE datalink DROP COLUMN datalink_timestamp_create;
+
+ALTER TABLE datalink DROP COLUMN datalink_timestamp_last_usage;
+
+ALTER TABLE datalink ADD COLUMN datalink_timestamp TIMESTAMP WITHOUT TIME ZONE;
+
+ALTER TABLE datalink ADD COLUMN datalink_timestamp_create TIMESTAMP WITHOUT TIME ZONE;
+
+ALTER TABLE datalink ADD COLUMN datalink_timestamp_last_usage TIMESTAMP WITHOUT TIME ZONE;
+ 
+

Modified: trunk/mapbender/resources/locale/de_DE/LC_MESSAGES/Mapbender.po
===================================================================
--- trunk/mapbender/resources/locale/de_DE/LC_MESSAGES/Mapbender.po	2012-04-19 11:06:12 UTC (rev 8322)
+++ trunk/mapbender/resources/locale/de_DE/LC_MESSAGES/Mapbender.po	2012-04-24 09:50:22 UTC (rev 8323)
@@ -3552,3 +3552,6 @@
 msgid "Transparency"
 msgstr "Transparenz"
 
+msgid "MapFormat"
+msgstr "Bildformat"
+



More information about the Mapbender_commits mailing list