[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