[Mapbender-commits] r8573 - in trunk/mapbender: http/geoportal http/php resources/db/pgsql/UTF-8/update
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Mon Feb 25 06:48:02 PST 2013
Author: armin11
Date: 2013-02-25 06:48:02 -0800 (Mon, 25 Feb 2013)
New Revision: 8573
Modified:
trunk/mapbender/http/geoportal/mod_pullInspireMonitoring.php
trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php
trunk/mapbender/http/php/mod_syncCkan.php
trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.3_to_2.7.4_pgsql_UTF-8.sql
Log:
Bugfixes and enhancement for ckan interface, bugfix for inspire monitoring table
Modified: trunk/mapbender/http/geoportal/mod_pullInspireMonitoring.php
===================================================================
--- trunk/mapbender/http/geoportal/mod_pullInspireMonitoring.php 2013-02-24 19:11:38 UTC (rev 8572)
+++ trunk/mapbender/http/geoportal/mod_pullInspireMonitoring.php 2013-02-25 14:48:02 UTC (rev 8573)
@@ -24,7 +24,7 @@
if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
$testMatch = $_REQUEST["outputFormat"];
if (!($testMatch == 'json' or $testMatch == 'table')){
- echo 'outputFormat: <b>'.$testMatch.'</b> is not valid.<br/>';
+ echo 'outputFormat: is not valid.<br/>';
die();
}
$outputFormat = $testMatch;
@@ -35,7 +35,7 @@
$testMatch = $_REQUEST["registratingDepartments"];
$pattern = '/^[\d,]*$/';
if (!preg_match($pattern,$testMatch)){
- echo 'registratingDepartments: <b>'.$testMatch.'</b> is not valid.<br/>';
+ echo 'registratingDepartments: is not valid.<br/>';
die();
}
$registratingDepartments = $testMatch;
@@ -44,7 +44,7 @@
if (isset($_REQUEST["language"]) & $_REQUEST["language"] != "") {
$testMatch = $_REQUEST["language"];
if (!($testMatch == 'de' or $testMatch == 'en' or $testMatch == 'fr')){
- echo 'language: <b>'.$testMatch.'</b> is not valid.<br/>';
+ echo 'language: is not valid.<br/>';
die();
}
$lang = $testMatch;
@@ -101,7 +101,7 @@
//multisort?
//push information from groupOwnerArray to sqlTable
$sqlTable['organization'] = $groupOwnerArray[3];
-$sqlTable['userId'] = $groupOwnerArray[2];
+//$sqlTable['userId'] = $groupOwnerArray[2];
$sqlTable['orgaId'] = $groupOwnerArray[4];
//TODO: check sorting
//$wfsMatrix = $this->flipDiagonally($wfsMatrix); //- see class_metadata_new.php
@@ -208,9 +208,9 @@
}
$index = 0;
//push information directly into $groupOwnerArray at indizes from
- for ($i=0; $i < count($listOwnerIds); $i++){
+ for ($i=0; $i < count($listOwnerIdsKeys); $i++){
//find index of user with special id in array $metadataContactOwnerArray['user_id']
- $index = findIndexInMultiDimArray($metadataContactOwnerArray, $listOwnerIds[$i], 'mb_user_id');
+ $index = findIndexInMultiDimArray($metadataContactOwnerArray, $listOwnerIds[$listOwnerIdsKeys[$i]], 'mb_user_id');
$groupOwnerArray[2][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['user_id']; //user_id - 2
$groupOwnerArray[3][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['metadatapointofcontactorgname']; //orga_name - 3
$groupOwnerArray[4][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['orga_id'];
@@ -224,16 +224,16 @@
while ($row = db_fetch_array($resultOrgaGroup)) {
//push information into metadataContactArray
$metadataContactGroupArray[$index]['metadatapointofcontactorgname'] = $row['metadatapointofcontactorgname'];
- $metadataContactGroupArray[$index]['mb_user_id'] = $row['mb_user_id'];
+ $metadataContactGroupArray[$index]['mb_group_id'] = $row['mb_group_id'];
$metadataContactGroupArray[$index]['orga_id'] = $row['mb_group_id'];
$index++;
}
$index = 0;
//push information directly into $groupOwnerArray at indizes from
- for ($i=0; $i < count($listGroupIds); $i++){
+ for ($i=0; $i < count($listGroupIdsKeys); $i++){
//find index of user with special id in array $metadataContactGroupArray['user_id']
- $index = findIndexInMultiDimArray($metadataContactGroupArray, $listGroupIds[$i], 'mb_user_id');
- $groupOwnerArray[2][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['mb_user_id']; //user_id - 2
+ $index = findIndexInMultiDimArray($metadataContactGroupArray, $listGroupIds[$listGroupIdsKeys[$i]], 'mb_group_id');
+ $groupOwnerArray[2][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['mb_group_id']; //user_id - 2
$groupOwnerArray[3][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['metadatapointofcontactorgname']; //orga_name - 3
$groupOwnerArray[4][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['orga_id'];
}
Modified: trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php
===================================================================
--- trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php 2013-02-24 19:11:38 UTC (rev 8572)
+++ trunk/mapbender/http/php/mod_exportMapbenderLayer2CkanObjects.php 2013-02-25 14:48:02 UTC (rev 8573)
@@ -6,7 +6,7 @@
//select open data information from mapbenders database
$sql = <<<SQL
-select wms_id, layer_id, f_collect_topic_cat_layer(layer_id) as category, layer.uuid as uuid, wms_title || ':' || layer_title as title, wms_abstract || '\r\n' || layer_abstract as notes, tou_licence_title, tou_licence_url, tou_licence_id, isopen, to_timestamp(wms_timestamp) as wms_timestamp, to_timestamp(wms_timestamp_create) as wms_timestamp_create, wms_owner as service_owner,fees,accessconstraints, fkey_mb_group_id as service_group, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select termsofuse_id, description as tou_licence_title, descriptionlink as tou_licence_url, wms_tou.name as tou_licence_id, wms_tou.isopen as isopen, wms_id, wms_title, wms_timestamp, wms_timestamp_create, wms.wms_abstract, wms.wms_owner,fees,accessconstraints,wms.fkey_mb_group_id, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select * from termsofuse inner join wms_termsofuse on termsofuse.termso
fuse_id = wms_termsofuse.fkey_termsofuse_id and termsofuse.termsofuse_id in ($openLicences)) as wms_tou inner join wms on wms_tou.fkey_wms_id = wms.wms_id) as wms_tou2 inner join layer on wms_tou2.wms_id = layer.fkey_wms_id and layer_searchable=1;
+select wms_id, layer_id, f_collect_topic_cat_layer(layer_id) as category, f_collect_layer_keywords(layer_id) as keywords, layer.uuid as uuid, wms_title || ' - Ebene: ' || layer_title as title, wms_abstract || '\r\n' || layer_abstract as notes, tou_licence_title, tou_licence_url, tou_licence_id, isopen, to_timestamp(wms_timestamp) as wms_timestamp, to_timestamp(wms_timestamp_create) as wms_timestamp_create, wms_owner as service_owner,fees,accessconstraints, fkey_mb_group_id as service_group, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select termsofuse_id, description as tou_licence_title, descriptionlink as tou_licence_url, wms_tou.name as tou_licence_id, wms_tou.isopen as isopen, wms_id, wms_title, wms_timestamp, wms_timestamp_create, wms.wms_abstract, wms.wms_owner,fees,accessconstraints,wms.fkey_mb_group_id, contactperson, address, city, postcode, contactvoicetelephone, contactelectronicmailaddress from (select * from
termsofuse inner join wms_termsofuse on termsofuse.termsofuse_id = wms_termsofuse.fkey_termsofuse_id and termsofuse.termsofuse_id in ($openLicences)) as wms_tou inner join wms on wms_tou.fkey_wms_id = wms.wms_id) as wms_tou2 inner join layer on wms_tou2.wms_id = layer.fkey_wms_id and layer_searchable=1;
SQL;
$result = db_query($sql);
@@ -19,6 +19,7 @@
$sqlTable['service_id'][] = $row['wms_id'];
$sqlTable['resource_type'][] = "Kartenebene";
$sqlTable['resource_id'][] = $row['layer_id'];
+ $sqlTable['resource_keywords'][] = $row['keywords'];
$sqlTable['service_group'][] = $row['service_group'];
$sqlTable['service_owner'][] = $row['service_owner'];
$sqlTable['service_person'][] = $row['contactperson'];
@@ -40,9 +41,16 @@
if (isset($row['category']) && $row['category'] != '') {
$categories = explode(",",str_replace("{","",str_replace("}","",str_replace("}{",",",$row['category']))));
//exchange ids with ckan categories from ckan.conf
+ $numberOfCategories = 0;
for ($i=0; $i < count($categories); $i++){
if (array_key_exists($categories[$i],$topicCkanCategoryMap)) {
- $categories[$i] = $topicCkanCategoryMap[$categories[$i]];
+ //check if categories should be exploded
+ $newCategories = explode(",",$topicCkanCategoryMap[$categories[$i]]);
+ foreach ($newCategories as $cat) {
+ //explode categories if
+ $categories[$numberOfCategories] = $cat;
+ $numberOfCategories++;
+ }
}
}
$e = new mb_notice('mod_exportMapbenderLayer2CkanObjects.php: categories from db: '.$categories[1]);
@@ -119,11 +127,20 @@
$package->groups[$i + 1]->name = $mbArray['categories'][$i];
}
}
+ if ($mbArray['resource_keywords'] && $mbArray['resource_keywords'] != '') {
+ $package->tags = array();
+ $keywordArray = explode(',',$mbArray['resource_keywords']);
+ for ($i=0; $i < count($keywordArray); $i++){
+ $package->tags[$i]->name = $keywordArray[$i];
+ }
+ }
$package->name = $mbArray['name'];// $datasetName; //layer.uuid
$package->notes = $mbArray['notes'];//"Die (Digitale) Topographische Karte 1:100 000 ermöglicht aufgrund der abgebildeten Fläche die Darstellung großräumige Gebiete."; //wms.wms_abstract || layer.layer_abstract
$package->title = $mbArray['title'];//"Topographische Karte Rheinland-Pfalz 1:100.000"; //wms.wms_title || layer.layer_title - OK
//TODO: really needed?
- $package->other_terms_of_use = "other terms of use";//$mbArray['mb_user_id'];// "test tou"; //null or ""
+ //not needed, if licence is available in ckan instance!
+ $package->other_terms_of_use = "Keine Angaben";//$mbArray['mb_user_id'];// "test tou"; //null or ""
+
//TODO: problem date format
$package->temporal_coverage_to = substr($mbArray['temporal_coverage_to'],0,10);// "2012-01-01"; // last update ? wms.wms_timestamp - OK
@@ -167,7 +184,7 @@
$package->terms_of_use->license_id = $mbArray['tou_licence_id'];// "ger-name-nc"; //termsofuse.name - OK
$package->terms_of_use->license_title = $mbArray['tou_licence_title'];// "Datenlizenz Deutschland – Namensnennung – nicht kommerziell"; //termsofuse.description OK
$package->terms_of_use->license_url = $mbArray['tou_licence_url'];// null; //termsofuse.descriptionlink OK
- if ($mbArray['service_fees'] != "") {
+ if ($mbArray['service_fees'] != "" || strtoupper($mbArray['service_fees']) != "NONE" || strtoupper($mbArray['service_fees']) != "KEINE") {
$package->terms_of_use->other = $mbArray['service_fees'];//$mbArray['mb_user_id'];// null; // null?
} else {
//$package->terms_of_use->other = "Keine";
@@ -227,9 +244,9 @@
}
$index = 0;
//push information directly into $groupOwnerArray at indizes from
- for ($i=0; $i < count($listOwnerIds); $i++){
+ for ($i=0; $i < count($listOwnerIdsKeys); $i++){
//find index of user with special id in array $metadataContactOwnerArray['user_id']
- $index = findIndexInMultiDimArray($metadataContactOwnerArray, $listOwnerIds[$i], 'mb_user_id');
+ $index = findIndexInMultiDimArray($metadataContactOwnerArray, $listOwnerIds[$listOwnerIdsKeys[$i]], 'mb_user_id');
$groupOwnerArray[2][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['user_id']; //user_id - 2
$groupOwnerArray[3][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['metadatapointofcontactorgname']; //orga_name - 3
$groupOwnerArray[4][$listOwnerIdsKeys[$i]] = $metadataContactOwnerArray[$index]['metadatapointofcontactorgtitle']; //title - 4
@@ -259,16 +276,16 @@
$metadataContactGroupArray[$index]['metadatapointofcontactorgcity'] = $row['metadatapointofcontactorgcity'];
$metadataContactGroupArray[$index]['metadatapointofcontactorglogo'] = $row['metadatapointofcontactorglogo'];
$metadataContactGroupArray[$index]['mb_group_homepage'] = $row['mb_group_homepage'];
- $metadataContactGroupArray[$index]['mb_user_id'] = $row['mb_user_id'];
+ $metadataContactGroupArray[$index]['mb_group_id'] = $row['mb_group_id'];
$metadataContactGroupArray[$index]['orga_id'] = $row['mb_group_id'];
$index++;
}
$index = 0;
//push information directly into $groupOwnerArray at indizes from
- for ($i=0; $i < count($listGroupIds); $i++){
+ for ($i=0; $i < count($listGroupIdsKeys); $i++){
//find index of user with special id in array $metadataContactGroupArray['user_id']
- $index = findIndexInMultiDimArray($metadataContactGroupArray, $listGroupIds[$i], 'mb_user_id');
- $groupOwnerArray[2][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['mb_user_id']; //user_id - 2
+ $index = findIndexInMultiDimArray($metadataContactGroupArray, $listGroupIds[$listGroupIdsKeys[$i]], 'mb_group_id');
+ $groupOwnerArray[2][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['mb_group_id']; //user_id - 2
$groupOwnerArray[3][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['metadatapointofcontactorgname']; //orga_name - 3
$groupOwnerArray[4][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['metadatapointofcontactorgtitle']; //title - 4
$groupOwnerArray[5][$listGroupIdsKeys[$i]] = $metadataContactGroupArray[$index]['metadatapointofcontactorgaddress']; //address - 5
Modified: trunk/mapbender/http/php/mod_syncCkan.php
===================================================================
--- trunk/mapbender/http/php/mod_syncCkan.php 2013-02-24 19:11:38 UTC (rev 8572)
+++ trunk/mapbender/http/php/mod_syncCkan.php 2013-02-25 14:48:02 UTC (rev 8573)
@@ -24,7 +24,6 @@
echo json_encode($ckanObjects);
*/
//first check if group with given name exists - if not create it in the ckan instance via action api, if it exists - update title and link to logo
-
$group = group_get(CKAN_GROUP_NAME);
if (!$group) {
print "No group found, create it via action api!";
@@ -34,6 +33,7 @@
$newGroup->name = CKAN_GROUP_NAME;
$newGroup->title = CKAN_GROUP_TITLE;
$newGroup->image_url = CKAN_GROUP_SYMBOL;
+ $newGroup->description = CKAN_GROUP_DESCRIPTION;
try {
$result = $ckan->action_group_create(json_encode($newGroup));
}
@@ -47,7 +47,6 @@
} else {
print "Group <b>".$group->name."</b> found. Datasets will be pushed into this group.";
}
-
if (defined("CKAN_EXPORT_URL") && CKAN_EXPORT_URL != "") {
$mapbenderCkanUrl = CKAN_EXPORT_URL;
} else {
@@ -91,7 +90,6 @@
$datasetToDelete = $ckanDatasetArray;
}
}
-
//show datasets to be deleted:
if ($datasetToDelete) {
print "<b>ckan datasets to be deleted:</b><br>";
@@ -100,7 +98,6 @@
print $dataset."<br>";
}
}
-
//check datasets to be updated:
if (!$ckanDatasetArray) {
$datasetToUpdate = false;
@@ -117,7 +114,6 @@
} else {
print "<b>No datasets to update!</b><br>";
}
-
//get datasets to be created
if ($ckanDatasetArray && $mbDatasetArray) {
$datasetToCreate = array_diff($mbDatasetArray, $ckanDatasetArray);
@@ -129,7 +125,6 @@
$datasetToCreate = false;
}
}
-
if ($datasetToCreate) {
print "<b>Mapbender datasets to be created for the first time:</b><br>";
foreach ($datasetToCreate as $dataset) {
@@ -139,9 +134,7 @@
} else {
print "<b>No datasets to create!</b><br>";
}
-
//identify which are identical and which are new and which are lost
-
//first delete the orphaned
foreach ($datasetToDelete as $datasetName) {
$result = package_delete($datasetName,CKAN_API_UPDATE);
@@ -151,7 +144,6 @@
print "Package ".$datasetName." could not be deleted!<br>";
}
}
-
if ($datasetToUpdate) {
print "<b>Update of datasets</b><br>";
}
@@ -166,6 +158,9 @@
for ($i=0;$i < count($newPackage->groups);$i++) {
$newPackage->groups[$i] = $newPackage->groups[$i]->name;
}
+ for ($i=0;$i < count($newPackage->tags);$i++) {
+ $newPackage->tags[$i] = $newPackage->tags[$i]->name;
+ }
}
//update it with action api
$result = package_update ($newPackage,CKAN_API_UPDATE);
@@ -177,7 +172,6 @@
}
}
}
-
//second create the new ones
foreach ($datasetToCreate as $datasetName) {
//get dataset from object
@@ -410,11 +404,14 @@
//the existing package was called by action api therefor group will be defined as dict and be flattened before update
//TODO: check if api 2 uses dict for group or not!
for ($i=0;$i < count($existingPackage->groups);$i++) {
- $error = new mb_exception('mod_syncCkan.php: groups['.$i.']->name old:'.$existingPackage->groups[$i]->name);
+ //$error = new mb_exception('mod_syncCkan.php: groups['.$i.']->name old:'.$existingPackage->groups[$i]->name);
$existingPackage->groups[$i] = $existingPackage->groups[$i]->name;
- $error = new mb_exception('mod_syncCkan.php: groups['.$i.'] new:'.$existingPackage->groups[$i]);
+ //$error = new mb_exception('mod_syncCkan.php: groups['.$i.'] new:'.$existingPackage->groups[$i]);
}
+ for ($i=0;$i < count($existingPackage->tags);$i++) {
+ $existingPackage->tags[$i] = $existingPackage->tags[$i]->name;
+ }
$package->point_of_contact = "dummy";
$package->content_type = "dummy";
$package->point_of_contact_free_address = "dummy";
@@ -439,12 +436,12 @@
break;
case 1:
//update it with api v1 ;-)
- for ($i=0;$i < count($existingPackage->groups);$i++) {
- $error = new mb_exception('mod_syncCkan.php: groups['.$i.']->name old:'.$existingPackage->groups[$i]->name);
-
+ for ($i=0;$i < count($existingPackage->groups);$i++) {
$existingPackage->groups[$i] = $existingPackage->groups[$i]->name;
- $error = new mb_exception('mod_syncCkan.php: groups['.$i.'] new:'.$existingPackage->groups[$i]);
}
+ for ($i=0;$i < count($existingPackage->tags);$i++) {
+ $existingPackage->tags[$i] = $existingPackage->tags[$i]->name;
+ }
//some rp specials for deleting non conformant datasets - which maybe generated by hand!
/*2013-02-23 21:37:57,704 ERROR [ckan.controllers.api] Validation error: "{'point_of_contact': [u'Missing value'], 'content_type': [u'Missing value'], 'point_of_contact_free_address': [u'At least one value must be specified'], 'point_of_contact_email': [u'At least one value must be specified'], 'point_of_contact_url': [u'At least one value must be specified']}"*/
Modified: trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.3_to_2.7.4_pgsql_UTF-8.sql
===================================================================
--- trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.3_to_2.7.4_pgsql_UTF-8.sql 2013-02-24 19:11:38 UTC (rev 8572)
+++ trunk/mapbender/resources/db/pgsql/UTF-8/update/update_2.7.3_to_2.7.4_pgsql_UTF-8.sql 2013-02-25 14:48:02 UTC (rev 8573)
@@ -43,3 +43,31 @@
--INSERT INTO termsofuse (name,symbollink,description,descriptionlink,isopen) VALUES ('dl-de-by-nc-1.0', 'http://i.creativecommons.org/l/by-nc/3.0/de/88x31.png','Datenlizenz Deutschland – Namensnennung – nicht-kommerziell – Version 1.0','http://www.daten-deutschland.de/bibliothek/Datenlizenz_Deutschland/dl-de-by-nc-1.0',0);
UPDATE termsofuse SET name = 'cc-by-nc-nd' WHERE name = 'CC by-nc-nd';
+-- Function: f_collect_layer_keywords(integer, integer)
+
+-- DROP FUNCTION f_collect_layer_keywords(integer, integer);
+
+CREATE OR REPLACE FUNCTION f_collect_layer_keywords(integer)
+ RETURNS text AS
+$BODY$DECLARE
+ p_layer_id ALIAS FOR $1;
+
+ r_keywords RECORD;
+ l_result TEXT;
+BEGIN
+ l_result := '';
+ FOR r_keywords IN SELECT DISTINCT keyword FROM
+ (SELECT keyword FROM layer_keyword L JOIN keyword K ON (K.keyword_id = L.fkey_keyword_id AND L.fkey_layer_id = p_layer_id)
+ ) AS __keywords__ LOOP
+ l_result := l_result || ',' || COALESCE(r_keywords.keyword, '');
+ END LOOP;
+ l_result := trim(leading ',' from l_result);
+ RETURN l_result;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT
+ COST 100;
+ALTER FUNCTION f_collect_layer_keywords(integer)
+ OWNER TO postgres;
+
+
More information about the Mapbender_commits
mailing list