[Mapbender-commits] r2378 - branches/2.5/http/sld

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Thu Apr 10 19:08:49 EDT 2008


Author: mschulz
Date: 2008-04-10 19:08:49 -0400 (Thu, 10 Apr 2008)
New Revision: 2378

Added:
   branches/2.5/http/sld/sld_function_getusersld.php
Log:
initial checkin

Added: branches/2.5/http/sld/sld_function_getusersld.php
===================================================================
--- branches/2.5/http/sld/sld_function_getusersld.php	                        (rev 0)
+++ branches/2.5/http/sld/sld_function_getusersld.php	2008-04-10 23:08:49 UTC (rev 2378)
@@ -0,0 +1,141 @@
+<?php
+# $Id: sld_function_handler.php 2323 2008-04-01 15:48:35Z astrid_emde $
+# http://www.mapbender.org/index.php/SLD
+# Copyright (C) 2002 CCGIS 
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+/**
+ * This file realizes the function handling for the sld editor.
+ * Requests from the sld_edit_form are forwarded to this page.
+ * After processing the requested function this file forwards to the
+ * sld_main.php.
+ * Only if the request is to get the sld it will not forward to sld_main.php - 
+ * in this case this file will return the requested sld-document instead.
+ * 
+ * @package sld_function_handler
+ * @author Markus Krzyzanowski
+ */
+
+#require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+#include_once(dirname(__FILE__)."/sld_config.php");
+include_once(dirname(__FILE__)."/../../conf/mapbender.conf");
+#require_once(dirname(__FILE__)."/../classes/class_mb_exception.php");
+
+/**
+ * This function saves the data into the database
+ * @param string $data the content of the sld-document to be stored inside the database
+ */
+
+if (isset($_REQUEST["function"]))
+{
+	// the function "getusersld" is called by the mapserver to get the user's sld
+	if ($_REQUEST["function"] == "getusersld")
+	{
+		if ( isset($_REQUEST["sld_layer_id"]) && isset($_REQUEST["sld_gui_id"]) && isset($_REQUEST["user_id"]) )
+		{ //Used for the preview
+			$con = db_connect($DBSERVER,$OWNER,$PW);
+			db_select_db($DB,$con);
+			$sql = "SELECT * FROM sld_user_layer WHERE fkey_gui_id=$1 AND fkey_layer_id=$2 AND fkey_mb_user_id=$3";
+			$v = array($_REQUEST["sld_gui_id"], $_REQUEST["sld_layer_id"], $_REQUEST["user_id"]);
+			$t = array('s', 'i', 'i');
+			$res = db_prep_query($sql,$v,$t);			
+
+			if ( db_fetch_row($res, 0) )
+			{
+				//forcesld is used for the preview image to force the sld
+				if ( db_result($res, 0, "use_sld") == "1" || $_REQUEST["forcesld"] == "1" )
+				{
+					echo db_result($res, 0, "sld_xml");
+				}
+			}
+		} //Used for mapbender integration - old deprecated
+		else if ( isset($_REQUEST["sld_layer_names"]) && isset($_REQUEST["user_id"]) )
+		{
+			$layer_names = split(",", urldecode($_REQUEST["sld_layer_names"]));
+			
+			$con = db_connect($DBSERVER,$OWNER,$PW);
+			db_select_db($DB,$con);
+			
+			/*$sld_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<StyledLayerDescriptor version=\"1.0.0\">\n";*/
+			$sld_xml = "<StyledLayerDescriptor version=\"1.0.0\" xmlns=\"http://www.opengis.net/sld\" xmlns:ogc=\"http://www.opengis.net/ogc\">\n";
+			
+			foreach ($layer_names as $layer_name)
+			{
+				$sql = "SELECT * FROM layer WHERE layer_name=$1";
+				$v = array($layer_name);
+				$t = array('s');
+				$res = db_prep_query($sql,$v,$t);				
+
+				$layer_id = "";
+				if ( db_fetch_row($res, 0) )
+				{
+					$layer_id = db_result($res, 0, "fkey_layer_id");
+					$sql = "SELECT * FROM sld_user_layer WHERE fkey_layer_id=$1 AND fkey_mb_user_id=$2";
+					$v = array($layer_id, $_REQUEST["user_id"]);
+					$t = array('i', 'i');
+					$res = db_prep_query($sql,$v,$t);
+					
+					if ( db_fetch_row($res, 0) )
+					{
+						if ( db_result($res, 0, "use_sld") == "1" )
+						{
+							$data = db_result($res, 0, "sld_xml");
+							$styledlayerdescriptor = parseSld($data);
+							$sld_xml .= $styledlayerdescriptor->layers[0]->generateXml(" ");
+						}
+					}
+				}
+			}
+			$sld_xml .= "</StyledLayerDescriptor>";
+			echo $sld_xml;
+		} //Used for mapbender integration
+		else if ( isset($_REQUEST["sld_wms_id"]) && isset($_REQUEST["sld_gui_id"]) )
+		{
+		
+			$con = db_connect($DBSERVER,$OWNER,$PW);
+			db_select_db($DB,$con);
+			$sql = "SELECT fkey_layer_id FROM gui_layer WHERE fkey_gui_id=$1 AND gui_layer_wms_id=$2";
+			$v = array($_REQUEST["sld_gui_id"], $_REQUEST["sld_wms_id"]);
+			$t = array('s', 'i');
+			$res = db_prep_query($sql,$v,$t);
+			
+			$sld_xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
+			$sld_xml .= "<StyledLayerDescriptor version=\"1.0.0\" xmlns=\"http://www.opengis.net/sld\" xmlns:ogc=\"http://www.opengis.net/ogc\">\n";			
+
+			while ($row = db_fetch_row($res))
+			{
+				$layer_id = $row[0];
+				$sql = "SELECT * FROM sld_user_layer WHERE fkey_layer_id=$1 AND fkey_gui_id=$2";
+				$v = array($layer_id, $_REQUEST["sld_gui_id"]);
+				$t = array('i', 's');
+				$res2 = db_prep_query($sql,$v,$t);
+
+				if ( db_fetch_row($res2, 0) )
+				{
+					if ( db_result($res2, 0, "use_sld") == "1" )
+					{
+						$data = db_result($res2, 0, "sld_xml");
+						$styledlayerdescriptor = parseSld($data);
+						$sld_xml .= $styledlayerdescriptor->layers[0]->generateXml(" ");
+					}
+				}
+			}
+			$sld_xml .= "</StyledLayerDescriptor>";
+			echo $sld_xml;
+		}
+	}
+}
+?>
\ No newline at end of file



More information about the Mapbender_commits mailing list