[Mapbender-commits] r7035 - trunk/mapbender/http/plugins

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Mon Oct 11 01:10:31 EDT 2010


Author: armin11
Date: 2010-10-10 22:10:31 -0700 (Sun, 10 Oct 2010)
New Revision: 7035

Added:
   trunk/mapbender/http/plugins/mb_metadata_wmc_server.php
Log:
Initial server component for wmc metadata editor

Added: trunk/mapbender/http/plugins/mb_metadata_wmc_server.php
===================================================================
--- trunk/mapbender/http/plugins/mb_metadata_wmc_server.php	                        (rev 0)
+++ trunk/mapbender/http/plugins/mb_metadata_wmc_server.php	2010-10-11 05:10:31 UTC (rev 7035)
@@ -0,0 +1,396 @@
+<?php
+require_once dirname(__FILE__) . "/../../core/globalSettings.php";
+require_once dirname(__FILE__) . "/../classes/class_user.php";
+require_once dirname(__FILE__) . "/../classes/class_wmc.php";
+require_once(dirname(__FILE__)."/../classes/class_wmc_factory.php");
+
+$ajaxResponse = new AjaxResponse($_POST);
+
+function abort ($message) {
+	global $ajaxResponse;
+	$ajaxResponse->setSuccess(false);
+	$ajaxResponse->setMessage($message);
+	$ajaxResponse->send();
+	die;
+};
+
+function getWmc ($wmcId = null) {
+	$user = new User(Mapbender::session()->get("mb_user_id"));
+	$wmcIdArray = $user->getOwnedWmc();
+	if (!is_array($wmcIdArray) || count($wmcIdArray) === 0) {
+		abort(_mb("No metadata sets available."));
+	}
+	if (!is_null($wmcId) && !in_array($wmcId, $wmcIdArray)) {
+		abort(_mb("You are not allowed to access this WMC."));
+	}
+	return $wmcIdArray;
+}
+
+/*function getFeaturetype ($featuretypeId = null) {
+	$user = new User(Mapbender::session()->get("mb_user_id"));
+	$wfsIdArray = $user->getOwnedWfs();
+	if (!is_array($wfsIdArray) || count($wfsIdArray) === 0) {
+		abort(_mb("No metadata sets available."));
+	}
+	$wfsId = wfs::getWfsIdByFeaturetypeId($featuretypeId);
+	if (is_null($wfsId) || !in_array($wfsId, $wfsIdArray)) {
+		abort(_mb("You are not allowed to access this WFS " . $wfsId));
+	}
+	return;
+}
+*/
+switch ($ajaxResponse->getMethod()) {
+	case "getWmc" :
+		$wmcIdArray = getWfs();
+		
+		$wmcList = implode(",", $wmcIdArray);
+		
+		$sql = <<<SQL
+	
+SELECT mb_user_wmc.wmc_serial_id as wmc_id, mb_user_wmc.wmc_title, mb_user_wmc.wmc_timestamp FROM mb_user_wmc WHERE wmc_serial_id IN ($wmcList);
+
+SQL;
+		$res = db_query($sql);
+		$resultObj = array(
+			"header" => array(
+				"WMC ID",
+				"Titel",
+				"Timestamp"
+			), 
+			"data" => array()
+		);
+
+		while ($row = db_fetch_row($res)) {
+			// convert NULL to '', NULL values cause datatables to crash
+			$walk = array_walk($row, create_function('&$s', '$s=strval($s);'));
+			$resultObj["data"][]= $row;
+		}
+		$ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+		break;
+
+	case "getWmcMetadata" :
+		$wmcId = $ajaxResponse->getParameter("id");
+		getWmcs($wmcId);
+
+		$sql = <<<SQL
+	
+SELECT wmc_serial_id as wmc_id, wmc_abstract, wmc_title 
+individualname, positionname, providername, voice, 
+wmc_timestamp, wmc_timestamp_create 
+FROM mb_user_wmc WHERE wmc_serial_id = $wmcId;
+
+SQL;
+
+		$res = db_query($sql);
+		$resultObj = array();
+		$row = db_fetch_assoc($res);
+		
+		$resultObj['wmc_id'] = $row['wmc_id'];
+		$resultObj['summary'] = $row['wmc_abstract'];
+		$resultObj['title'] = $row['wfs_title'];
+		$resultObj['fees'] = $row['fees'];
+		$resultObj['wmc_timestamp'] = $row['wmc_timestamp'] != "" ? date('d.m.Y', $row['wmc_timestamp']) : "";
+		$resultObj['wmc_timestamp_create'] = $row['wmc_timestamp_create'] != "" ? date('d.m.Y', $row['wmc_timestamp_create']) : "";
+		
+		$keywordSql = <<<SQL
+	
+SELECT DISTINCT keyword FROM keyword, wmc_keyword 
+WHERE keyword_id = fkey_keyword_id AND 
+fkey_wmc_id = $wmcId ORDER BY keyword
+
+SQL;
+
+		$keywordRes = db_query($keywordSql);
+		$keywords = array();
+		while ($keywordRow = db_fetch_assoc($keywordRes)) {
+			$keywords[]= $keywordRow["keyword"];
+		}
+
+		$resultObj["wmc_keywords"] = implode(", ", $keywords);
+/*
+		$termsofuseSql = <<<SQL
+SELECT fkey_termsofuse_id FROM wfs_termsofuse WHERE fkey_wfs_id = $wfsId
+SQL;
+
+		$termsofuseRes = db_query($termsofuseSql);
+		if ($termsofuseRes) {
+			$termsofuseRow = db_fetch_assoc($termsofuseRes);
+			$resultObj["wfs_termsofuse"] = $termsofuseRow["fkey_termsofuse_id"];
+		}
+		else {
+			$resultObj["wfs_termsofuse"] = null;
+		}
+		
+
+		$ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+
+		break;
+	
+	case "getFeaturetypeMetadata" :
+		$featuretypeId = $ajaxResponse->getParameter("id");
+		getFeaturetype($featuretypeId);
+
+		$sql = <<<SQL
+	
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract, featuretype_searchable 
+FROM wfs_featuretype WHERE featuretype_id = $featuretypeId;
+
+SQL;
+		$res = db_query($sql);
+
+		$resultObj = array();
+		while ($row = db_fetch_assoc($res)) {
+			foreach ($row as $key => $value) {
+				$resultObj[$key] = $value;
+			}
+		}
+*/
+		$sql = <<<SQL
+SELECT fkey_md_topic_category_id
+FROM wmc_md_topic_category 
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+		$res = db_query($sql);
+		while ($row = db_fetch_assoc($res)) {
+			$resultObj["wmc_md_topic_category_id"][]= $row["fkey_md_topic_category_id"];
+		}
+
+		$sql = <<<SQL
+SELECT fkey_inspire_category_id 
+FROM wmc_inspire_category 
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+		$res = db_query($sql);
+		while ($row = db_fetch_assoc($res)) {
+			$resultObj["wmc_inspire_category_id"][]= $row["fkey_inspire_category_id"];
+		}
+
+		$sql = <<<SQL
+SELECT fkey_custom_category_id 
+FROM wmc_custom_category 
+WHERE fkey_wmc_serial_id = $wmcId
+SQL;
+		$res = db_query($sql);
+		while ($row = db_fetch_assoc($res)) {
+			$resultObj["wmc_custom_category_id"][]= $row["fkey_custom_category_id"];
+		}
+/*
+		$sql = <<<SQL
+SELECT keyword FROM keyword, wfs_featuretype_keyword 
+WHERE keyword_id = fkey_keyword_id AND fkey_featuretype_id = $featuretypeId
+SQL;
+		$res = db_query($sql);
+
+		$resultObj["featuretype_keyword"] = array();
+		while ($row = db_fetch_assoc($res)) {
+			$resultObj["featuretype_keyword"][]= $row["keyword"];
+		}
+
+		$ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+		break;
+	case "getFeaturetypeByWfs" :
+		$wfsId = $ajaxResponse->getParameter("id");
+//		getWms($wmsId);
+
+		$sql = <<<SQL
+	
+SELECT featuretype_id, featuretype_name, featuretype_title, featuretype_abstract 
+FROM wfs_featuretype WHERE fkey_wfs_id = $wfsId ORDER BY featuretype_id;
+
+SQL;
+		$res = db_query($sql);
+
+		$rows = array();
+		while ($row = db_fetch_assoc($res)) {
+			$rows[] = $row;
+		}
+		$left = 1;
+
+		function createNode ($left, $right, $row) {
+			return array(
+				"left" => $left,
+				"right" => $right,
+				#"parent" => $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null,
+				#"pos" => intval($row["layer_pos"]),
+				"attr" => array (
+					"featuretype_id" => intval($row["featuretype_id"]),
+					"featuretype_name" => $row["featuretype_name"],
+					"featuretype_title" => $row["featuretype_title"],
+					"featuretype_abstract" => $row["featuretype_abstract"]
+				)
+			);
+		}
+
+		function addSubTree ($rows, $i, $left) {
+			$nodeArray = array();
+			$addNewNode = true;
+			for ($j = $i; $j < count($rows); $j++) {
+				$row = $rows[$j];
+				$pos = $j;
+				
+				// first node of subtree
+				if ($addNewNode) {
+					$nodeArray[]= createNode($left, null, $row);
+					$addNewNode = false;
+				}
+				else {
+					$nodeArray[count($nodeArray)-1]["right"] = ++$left;
+					$nodeArray[]= createNode(++$left, null, $row);
+				}
+			}
+			if (is_null($nodeArray[count($nodeArray)-1]["right"])) {
+				$nodeArray[count($nodeArray)-1]["right"] = ++$left;
+			}
+			return $nodeArray;
+		}
+		
+
+		$nodeArray = addSubTree($rows, 0, 1);
+		$resultObj = array(
+			"nestedSets" => $nodeArray
+		);
+		
+		$ajaxResponse->setResult($resultObj);
+		$ajaxResponse->setSuccess(true);
+		
+		break;*/
+	case "save":
+		$data = $ajaxResponse->getParameter("data");
+		
+		try {
+			$wmcId = intval($data->wmc->wmc_id);
+		}
+		catch (Exception $e) {
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Invalid WMC ID."));
+			$ajaxResponse->send();						
+		}
+		getWmc($wmcId);
+		//is that true for a wmc? control it
+		$wfsFactory = new UniversalWfsFactory();
+		$wfs = $wfsFactory->createFromDb($wfsId);
+		if (is_null($wfs)) {
+			$ajaxResponse->setSuccess(false);
+			$ajaxResponse->setMessage(_mb("Invalid WFS ID."));
+			$ajaxResponse->send();	
+		}
+		
+		$columns = array(
+			"summary", 
+			"title",
+			"wmc_keyword",
+			"wmc_md_topic_category_id",
+			"wmc_inspire_category_id",
+			"wmc_custom_category_id"
+		);
+		foreach ($columns as $c) {
+			$value = $data->wmc->$c;
+			//if (!is_null($value)) {
+			//	$wmc->$c = $value;
+			//}
+			if ($c === "summary") {
+				$value = $data->wmc_abstract;
+			}
+			elseif ($c === "title") {
+				$value = $data->wmc_title;
+			}
+			else {
+				$value = $data->$c;
+			}
+			if ($c === "wmc_keyword") {
+						$wmc->$c = explode(",", $value);
+						foreach ($wmc->$c as &$val) {
+							$val = trim($val);
+						}
+					}
+					elseif ($c === "wmc_md_topic_category_id" 
+						|| $c === "wmc_inspire_category_id"
+						|| $c === "wmc_custom_category_id"
+					) {
+						if (!is_array($value)) {
+							$wmc->$c = array($value);
+						}
+						else {
+							$wmc->$c = $value;
+						}
+					}
+					else {
+						if (!is_null($value)) {
+							$wmc->$c = $value;
+						}
+					}
+		}
+		
+/*		try {
+			$featuretypeId = intval($data->featuretype->featuretype_id);
+		}
+		catch (Exception $e) {
+		}*/
+
+/*		if ($featuretypeId) {
+			$featuretype = $wfs->findFeatureTypeById($featuretypeId);
+			if (!is_null($featuretype)) {
+				
+				$columns = array(
+					"summary", 
+					"title",
+					"featuretype_keyword",
+					"featuretype_md_topic_category_id",
+					"featuretype_inspire_category_id",
+					"featuretype_custom_category_id"
+				);			
+	
+				foreach ($columns as $c) {
+					if ($c === "summary") {
+						$value = $data->featuretype->featuretype_abstract;
+					}
+					elseif ($c === "title") {
+						$value = $data->featuretype->featuretype_title;
+					}
+					else {
+						$value = $data->featuretype->$c;
+					}	
+					if ($c === "featuretype_keyword") {
+						$featuretype->$c = explode(",", $value);
+						foreach ($featuretype->$c as &$val) {
+							$val = trim($val);
+						}
+					}
+					elseif ($c === "featuretype_md_topic_category_id" 
+						|| $c === "featuretype_inspire_category_id"
+						|| $c === "featuretype_custom_category_id"
+					) {
+						if (!is_array($value)) {
+							$featuretype->$c = array($value);
+						}
+						else {
+							$featuretype->$c = $value;
+						}
+					}
+					else {
+						if (!is_null($value)) {
+							$featuretype->$c = $value;
+						}
+					}
+				}
+			}
+		}*/
+
+		$wmc->update();
+
+		
+		$ajaxResponse->setMessage("Updated WMC metadata for ID " . $wmcId);
+		$ajaxResponse->setSuccess(true);		
+		
+		break;
+	default: 
+		$ajaxResponse->setSuccess(false);
+		$ajaxResponse->setMessage(_mb("An unknown error occured."));
+		break;
+}
+
+$ajaxResponse->send();
+?>



More information about the Mapbender_commits mailing list