<?php
# $Id$
# http://www.mapbender.org/index.php/Administration
# 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.

$e_id="loadWMSList";
require_once(dirname(__FILE__)."/../php/mb_validatePermission.php");
/*
 * @security_patch irv done
 */
//security_patch_log(__FILE__,__LINE__);

$guiList = $_POST["guiList"];
$wmsID = $_POST["wmsID"];
$guiID_ = $_POST["guiID_"];
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset='.CHARSET.'">';	
?>
<title>Load WMS from Catalog</title>
<?php
include '../include/dyn_css.php';
?>
<style type="text/css">
  	<!--
  	body{
      background-color: #ffffff;
  		font-family: Arial, Helvetica, sans-serif;
  		font-size : 12px;
  		color: #808080
  	}
  	.list_guis{
  		font-family: Arial, Helvetica, sans-serif;
  		font-size : 12px;
  		color: #808080;
  	}
.text1{
   font-family: Arial, Helvetica, sans-serif;
   font-size : 15px;
   position:absolute;
   top:190px;
}
.select1{
   position:absolute;
   top:210px;
   width:270px;
}
.text2{
   font-family: Arial, Helvetica, sans-serif;
   font-size : 15px;
   position:absolute;
   top:190px;
   left:300px;
}
.select2{
   position:absolute;
   top:210px;
   left:300px;
}
.getcapabilities{
   font-family: Arial, Helvetica, sans-serif;
   font-size : 15px;
   position:absolute;
   top:570px;
}

  	-->
</style>
<script language="JavaScript">
function validate(wert){
   if(wert == 'guiList'){
      var listIndex = document.form1.guiList.selectedIndex;
      if(listIndex<0){
		   alert("Please select a GUI.");
			return false;
      }
      else{
         var gui_id=document.form1.guiList.options[listIndex].value;
			document.form1.action='../php/mod_loadwms.php<?php echo SID;?>';
			document.form1.submit();
      }
   }
}
function load(){
      if(document.form1.guiList.selectedIndex<0){
		   alert("Please select a GUI.");
			return false;
      }
      var gui_ind = document.form1.guiList.selectedIndex;
      var ind = document.form1.wmsID.selectedIndex;
      var ind2 = document.form1.guiID_.selectedIndex;
			var indexWMSList = document.form1.wmsID.selectedIndex;
			var permission = true;

			var selectedWmsId = document.form1.wmsID.options[document.form1.wmsID.selectedIndex].value;
			for (i = 0; i < document.form1.wmsList.length; i++) {
						if (document.form1.wmsList.options[i].value == selectedWmsId){
							 permission = false;							 
							 alert ('The WMS (' + selectedWmsId + ') is already loaded in this application.');
							 break;
						}
			}			 
			
  			if (permission) { // only check if permission is not false 
        	var loadConfirmed = confirm("Load " + document.form1.wmsID.options[ind].text + " FROM " + document.form1.guiID_.options[ind2].value + " INTO "+document.form1.guiList.options[gui_ind].value+" ?");
          if(loadConfirmed){
             document.form1.submit();
          }
          else{
             document.form1.guiID_.selectedIndex = -1;
          }
			}	
			
}
</script>
</head>
<body>

<?php

require_once(dirname(__FILE__)."/../classes/class_administration.php");
$admin = new administration();
$ownguis = $admin->getGuisByOwner(Mapbender::session()->get("mb_user_id"),true);


###INSERT
if(isset($wmsID) && isset($guiID_)){
    
    //add wms: unlink the application cache file in cache directory
	$admin->clearJsCacheFile($guiList);
	
	
	$sql_pos = "SELECT MAX(gui_wms_position) AS my_gui_wms_position FROM gui_wms WHERE fkey_gui_id = $1";
	$v = array($guiList);
	$t = array('s');
	$res_pos = db_prep_query($sql_pos,$v,$t);
	if(db_result($res_pos,0,"my_gui_wms_position") > -1){
		$gui_wms_position = db_result($res_pos,0,"my_gui_wms_position") + 1;
	}
	else{
		$gui_wms_position = 0;
	}

	$sql = "SELECT * FROM gui_wms WHERE fkey_gui_id = $1 AND fkey_wms_id = $2";
	$v = array($guiID_,$wmsID);
	$t = array('s','i');
	$res = db_prep_query($sql,$v,$t);
	$cnt = 0;
	while($row = db_fetch_array($res)){
		$sql_ins = "INSERT INTO gui_wms (fkey_gui_id,fkey_wms_id,gui_wms_position,gui_wms_mapformat,";
		$sql_ins .= "gui_wms_featureinfoformat,gui_wms_exceptionformat,gui_wms_epsg,gui_wms_visible,gui_wms_opacity,gui_wms_sldurl) ";
		$sql_ins .= "VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10)";
		$v = array($guiList,$wmsID,$gui_wms_position,$row["gui_wms_mapformat"],$row["gui_wms_featureinfoformat"],
		$row["gui_wms_exceptionformat"],$row["gui_wms_epsg"],$row["gui_wms_visible"],$row["gui_wms_opacity"],$row["gui_wms_sldurl"]);
		$t = array('s','i','i','s','s','s','s','i','i','s');
		db_prep_query($sql_ins,$v,$t);
		$cnt++;
	}

	$sql = "SELECT * FROM gui_layer WHERE fkey_gui_id = $1 AND gui_layer_wms_id = $2";
	$v = array($guiID_, $wmsID);
	$t = array("s", "i");
	$res = db_prep_query($sql, $v, $t);
	$cnt = 0;
	while($row = db_fetch_array($res)){
		$sql_ins = "INSERT INTO gui_layer (fkey_gui_id,fkey_layer_id,gui_layer_wms_id,gui_layer_status,gui_layer_selectable,";
		$sql_ins .= "gui_layer_visible,gui_layer_queryable,gui_layer_querylayer,gui_layer_minscale,gui_layer_maxscale,";
		$sql_ins .= "gui_layer_priority,gui_layer_style,gui_layer_wfs_featuretype,gui_layer_title) ";
		$sql_ins .= "VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14)";
		$v = array($guiList,$row["fkey_layer_id"],$wmsID,$row["gui_layer_status"],$row["gui_layer_selectable"],
		$row["gui_layer_visible"],$row["gui_layer_queryable"],$row["gui_layer_querylayer"],$row["gui_layer_minscale"],
		$row["gui_layer_maxscale"],$row["gui_layer_priority"],$row["gui_layer_style"],$row["gui_layer_wfs_featuretype"],$row["gui_layer_title"]);
		$t = array('s','i','i','i','i','i','i','i','i','i','i','s','s');
		db_prep_query($sql_ins,$v,$t);
		$cnt++;
	}
}

echo "<form name='form1' action='" . $self."' method='post'>";

echo "<table cellpadding='0' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td>";
if (count($ownguis)>0){
	echo"GUI";
	echo"<br>";
	 
	$sql = "SELECT * FROM gui WHERE gui_id IN (";
	$v = $ownguis;
	$t = array();
	for ($i = 1; $i <= count($ownguis); $i++){
		if ($i > 1) { 
			$sql .= ",";
		}
		$sql .= "$".$i;
		array_push($t, "s");
	}
	$sql .= ") ORDER BY gui_name";	
	$res = db_prep_query($sql, $v, $t);
	$count=0;
	echo"<select size='8' name='guiList' style='width:200px' onClick='submit()'>";
	while($row = db_fetch_array($res)){
		$gui_name[$count]=$row["gui_name"];
		$gui_description[$count]=$row["gui_description"];
		$count++;
		echo "<option  value='".$row["gui_id"]."' ";
		if($guiList && $guiList == $row["gui_name"]){
			echo "selected";
		}
		echo ">".$row["gui_name"]."</option>";
	}
	
	$arrayGUIs = Mapbender::session()->get("mb_user_guis");
	echo count($arrayGUIs);
	echo "</select><br><br>";
	
	echo "</td>";
	echo "<td>";
	echo"WMS";
	echo"<br>";
	if(isset($guiList) && $guiList!=""){
		$sql = "SELECT DISTINCT wms_id, wms.wms_title,wms.wms_abstract, gui_wms_position FROM gui_wms ";
		$sql .= "JOIN gui ON gui_wms.fkey_gui_id = gui.gui_id JOIN wms ON gui_wms.fkey_wms_id=wms.wms_id ";
		$sql .= "AND gui_wms.fkey_gui_id=gui.gui_id WHERE gui.gui_name = $1 ORDER BY gui_wms_position";
		$v = array($guiList);
		$t = array('s');
		$res = db_prep_query($sql,$v,$t);	
		$count=0;
		echo"<select size='8' name='wmsList' style='width:200px'>";
	
		while($row = db_fetch_array($res)){
			if ($row["wms_title"]!=""){
				echo "<option title='".htmlentities($row["wms_abstract"],ENT_QUOTES,"UTF-8")."' value='".$row["wms_id"]."' ";
				echo ">".$row["wms_title"]."</option>";
			}
			$count++;
		}
		echo "</select><br><br>";
	}else{
		echo"<select size='8' name='wmsList' style='width:200px' on Click='submit()'>";
		echo "</select><br><br>";
	}
	echo "</td>";
	echo "<tr></table><br>";
	
	echo"<div class='text1'>Load WMS</div>";
	$sql = "SELECT DISTINCT wms.wms_id,wms.wms_title,wms.wms_abstract,wms.wms_owner FROM gui_wms JOIN wms ON ";
	$sql .= "wms.wms_id = gui_wms.fkey_wms_id WHERE gui_wms.fkey_gui_id IN(";
	$v = $arrayGUIs;
	$t = array();
	for ($i = 1; $i <= count($arrayGUIs); $i++){
		if ($i > 1) {
			$sql .= ",";
		}
		$sql .= "$" . $i;
		array_push($t, "s");
	}
	$sql .= ") ORDER BY wms.wms_title";
	$res = db_prep_query($sql, $v, $t);
	echo "<select class='select1' name='wmsID' size='20' onchange='submit()'>";
	$cnt = 0;
	while($row = db_fetch_array($res)){
		echo "<option title='".htmlentities($row["wms_abstract"],ENT_QUOTES,"UTF-8")."' value='".$row["wms_id"]."' ";
		if($row["wms_owner"] == Mapbender::session()->get("mb_user_id")){
			echo "style='color:green' ";	
		}
		else{
			echo "style='color:red' ";
		}
		if(isset($wmsID) && $wmsID == $row["wms_id"]){
			echo "selected";
			$wms_getcapabilities = $row["wms_getcapabilities"];
		}
		echo ">".$row["wms_title"]."</option>";
		$cnt++;
	}
	echo "</select>";
	
	if(isset($wmsID)){
		echo "<div class='text2'>FROM:</div>";
		$sql = "SELECT * from gui_wms WHERE fkey_wms_id = $1 ORDER BY fkey_gui_id";
		$v = array($wmsID);
		$t = array("s");
		$res = db_prep_query($sql, $v, $t);
		echo "<select class='select2' name='guiID_' size='20' onchange='load()'>";
		$cnt = 0;
		while($row = db_fetch_array($res)){
			echo "<option value='".$row["fkey_gui_id"]."' ";
			echo ">".$row["fkey_gui_id"]."</option>";
			$cnt++;
		}
	echo "</select>";
}
echo "</form>";
}else{
	echo "There are no guis available for this user. Please create a gui first.";
}
echo "<div class='getcapabilities'>" . $wms_getcapabilities . "</div>";
?>
</body>
</html>