<?php /** * Pandora FMS- http://pandorafms.com * ================================================== * Copyright (c) 2005-2009 Artica Soluciones Tecnologicas * * 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 for version 2. * 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. */ // Load global vars require_once ("include/config.php"); check_login (); if (! give_acl ($config['id_user'], 0, "PM") && ! is_user_admin ($config['id_user'])) { audit_db ($config['id_user'], $REMOTE_ADDR, "ACL Violation", "Trying to access Visual Setup Management"); require ("general/noaccess.php"); return; } require_once ('include/functions_gis.php'); $action = get_parameter('action', 'create_connection_map'); if (is_ajax ()) { } echo '<form action="index.php?sec=gsetup&sec2=godmode/setup/gis_step_2" method="post">'; switch ($action) { case 'create_connection_map': echo "<h2>".__('Pandora Setup')." » "; echo __('Create new map connection')."</h2>"; $mapConnection_name = ''; $mapConnection_group = ''; $mapConnection_numLevelsZoom = '16'; $mapConnection_defaultZoom = '19'; $mapConnection_type = 0; $mapConnection_defaultLatitude = '40.42056'; $mapConnection_defaultLongitude = '-3.708187'; $mapConnection_defaultAltitude = '0'; $mapConnection_centerLatitude = '40.42056'; $mapConnection_centerLongitude = '-3.708187'; $mapConnection_centerAltitude = '0'; $mapConnectionData = null; print_input_hidden('action', 'save_map_connection'); break; case 'edit_connection_map': echo "<h2>".__('Pandora Setup')." » "; echo __('Edit map connection')."</h2>"; $idConnectionMap = get_parameter('id_connection_map'); $mapConnection = get_db_row_sql('SELECT * FROM tgis_map_connection WHERE id_tmap_connection = ' . $idConnectionMap); $mapConnection_name = $mapConnection['conection_name']; $mapConnection_group = $mapConnection['group_id']; $mapConnection_numLevelsZoom = $mapConnection['num_zoom_levels']; $mapConnection_defaultZoom = $mapConnection['default_zoom_level']; $mapConnection_type = $mapConnection['connection_type']; $mapConnection_defaultLatitude = $mapConnection['default_latitude']; $mapConnection_defaultLongitude = $mapConnection['default_longitude']; $mapConnection_defaultAltitude = $mapConnection['default_altitude']; $mapConnection_centerLatitude = $mapConnection['initial_latitude']; $mapConnection_centerLongitude = $mapConnection['initial_longitude']; $mapConnection_centerAltitude = $mapConnection['initial_altitude']; $mapConnectionData = json_decode($mapConnection['conection_data'], true); print_input_hidden('id_connection_map', $idConnectionMap); print_input_hidden('action', 'save_edit_map_connection'); break; case 'save_map_connection': case 'save_edit_map_connection': $mapConnection_name = get_parameter('name'); $mapConnection_group = get_parameter('group'); $mapConnection_numLevelsZoom = get_parameter('num_levels_zoom'); $mapConnection_defaultZoom = get_parameter('initial_zoom'); $mapConnection_type = get_parameter('type'); $mapConnection_defaultLatitude = get_parameter('default_latitude'); $mapConnection_defaultLongitude = get_parameter('default_longitude'); $mapConnection_defaultAltitude = get_parameter('default_altitude'); $mapConnection_centerLatitude = get_parameter('center_latitude'); $mapConnection_centerLongitude = get_parameter('center_longitude'); $mapConnection_centerAltitude = get_parameter('center_altitude'); $idConnectionMap = get_parameter('id_connection_map', null); switch ($mapConnection_type) { case 'OSM': $mapConnection_OSM_url = get_parameter('url'); $mapConnectionData = array('type' => 'OSM', 'url' => $mapConnection_OSM_url); break; case 'Gmap': $mapConnection_Gmap_url= get_parameter('url'); $gmap_type= get_parameter('gmap_type'); $mapConnectionData = array('type' => 'Gmap', 'gmap_type' => $gmap_type); break; case 'Static_Image': $mapConnection_Image_url= get_parameter('url'); $bb_left= get_parameter('bb_left'); $bb_right= get_parameter('bb_right'); $bb_bottom= get_parameter('bb_bottom'); $bb_top= get_parameter('bb_top'); $image_height= get_parameter('image_height'); $image_width= get_parameter('image_width'); $mapConnectionData = array('type' => 'Static_Image', 'url' => $mapConnection_Image_url, 'bb_left' => $bb_left, 'bb_right' => $bb_right, 'bb_top' => $bb_top, 'bb_bottom' => $bb_bottom, 'image_width' => $image_width, 'image_height' => $image_height ); break; } //TODO VALIDATE PARAMETERS saveMapConnection($mapConnection_name, $mapConnection_group, $mapConnection_numLevelsZoom, $mapConnection_defaultZoom, $mapConnection_defaultLatitude, $mapConnection_defaultLongitude, $mapConnection_defaultAltitude, $mapConnection_centerLatitude, $mapConnection_centerLongitude, $mapConnection_centerAltitude, $mapConnectionData, $idConnectionMap); require_once('gis.php'); return; break; } $table->width = '90%'; $table->data = array(); $table->data[0][0] = __('Connection Name') .print_help_tip (__('Descriptive name for the connection'), true). ":"; $table->data[0][1] = print_input_text ('name', $mapConnection_name, '', 30, 60, true); $table->data[1][0] = __("Group") .print_help_tip (__('Group that owns the connection'), true) . ":"; $table->data[1][1] = print_select_from_sql('SELECT id_grupo, nombre FROM tgrupo', 'group', $mapConnection_group, '', '', '0', true); $table->data[2][0] = __('Number of zoom levels') . ":"; $table->data[2][1] = print_input_text ('num_levels_zoom', $mapConnection_numLevelsZoom, '', 4, 10, true); $table->data[3][0] = __('Default zoom level') .print_help_tip (__('Zoom level used when the map is opened'), true). ":"; $table->data[3][1] = print_input_text ('initial_zoom', $mapConnection_defaultZoom, '', 4, 10, true); echo "<h3>" . __('Basic configuration') . "</h3>"; print_table($table); $table->width = '60%'; $table->data = array(); $types[0] = __('Please select the connection type'); $types["OSM"] = __('Open Street Maps'); $types["Gmap"] = __('Google Maps'); $types["Static_Image"] = __('Static Image'); $table->data[0][0] = __('Type') . ":"; $table->data[0][1] = print_select($types, 'sel_type', $mapConnection_type, "selMapConnectionType();", '', 0, true); echo "<h3>" . __('Map connection type') . "</h3>"; print_table ($table); $optionsConnectionTypeTable = ''; $mapConnectionDataUrl = ''; $gmap_type = ''; $bb_left = ''; $bb_right = ''; $bb_bottom = ''; $bb_top = ''; $image_width = ''; $image_height = ''; if ($mapConnectionData != null) { switch ($mapConnection_type) { case 'OSM': $mapConnectionDataUrl = $mapConnectionData['url']; break; case 'Gmap': $gmap_type = $mapConnectionData['gmap_type']; break; case 'Static_Image': $mapConnectionDataUrl = $mapConnectionData['url']; $bb_left= $mapConnectionData['bb_left']; $bb_right= $mapConnectionData['bb_right']; $bb_bottom= $mapConnectionData['bb_bottom']; $bb_top= $mapConnectionData['bb_top']; $image_width= $mapConnectionData['image_width']; $image_height= $mapConnectionData['image_height']; break; } } // Open Street Map Connection $optionsConnectionOSMTable = '<table class="databox" border="0" cellpadding="4" cellspacing="4" width="50%">' . '<tr class="row_0">' . '<td>' . __("Tile Server URL") . ':</td>' . '<td><input id="type" type="hidden" name="type" value="OSM" />' . print_input_text ('url', $mapConnectionDataUrl, '', 45, 90, true) . '</td>' . '</tr>' . '</table>'; // Google Maps Connection $gmaps_types["G_PHYSICAL_MAP"] = __('Goolge Physical'); $gmaps_types["G_HYBRID_MAP"] = __('Goolge Hybrid'); $gmaps_types["G_SATELITE_MAP"] = __('Goolge Satelite'); // TODO: Add imput field for the key $optionsConnectionGmapTable = '<table class="databox" border="0" cellpadding="4" cellspacing="4" width="50%">' . '<tr class="row_0">' . '<td>' . __("Google Map Type") . ':</td>' . '<td><input id="type" type="hidden" name="type" value="Gmap" />'.trim(print_select($gmaps_types,'gmap_type', $gmap_type, "", '', 0, true)) . '</td>' . '</tr>' . '</table>'; // Image Map Connection $optionsConnectionImageTable = '<table class="databox" border="0" cellpadding="4" cellspacing="4" width="50%">' . '<tr class="row_0">' . '<td>' . __("Image URL") . ':</td>' . '<td colspan="3"><input id="type" type="hidden" name="type" value="Static_Image" />' . print_input_text ('url', $mapConnectionDataUrl, '', 45, 90, true) . '</td>' . '</tr>' . '<tr class="row_1">' . '<td colspan="4"><strong>' . __("Corners of the area of the image") . ':</strong></td>' . '</tr>' . '<tr class="row_2">' . '<td>' . __("Left") . ':</td>' . '<td>'. print_input_text ('bb_left', $bb_left, '', 25, 25, true) . '</td>' . '<td>' . __("Bottom") . ':</td>' . '<td>'. print_input_text ('bb_bottom', $bb_bottom, '',25 , 25, true) . '</td>' . '</tr>' . '<tr class="row_3">' . '<td>' . __("Right") . ':</td>' . '<td>'. print_input_text ('bb_right', $bb_right, '', 25, 25, true) . '</td>' . '<td>' . __("Top") . ':</td>' . '<td>'. print_input_text ('bb_top', $bb_top, '', 25, 25, true) . '</td>' . '</tr>' . '<tr class="row_4">' . '<td colspan="4"><strong>' . __("Image Size") . ':</strong></td>' . '</tr>' . '<tr class="row_5">' . '<td>' . __("Width") . ':</td>' . '<td>'. print_input_text ('image_width', $image_width, '', 25, 25, true) . '</td>' . '<td>' . __("Height") . ':</td>' . '<td>'. print_input_text ('image_height', $image_height, '', 25, 25, true) . '</td>' . '</tr>' . '</table>'; if ($mapConnectionData != null) { switch ($mapConnection_type) { case 'OSM': $optionsConnectionTypeTable = $optionsConnectionOSMTable; break; case 'Gmap': $optionsConnectionTypeTable = $optionsConnectionGmapTable; break; case 'Static_Image': $optionsConnectionTypeTable = $optionsConnectionImageTable; break; } } echo "<div id='form_map_connection_type'>" . $optionsConnectionTypeTable . "</div>"; echo "<h3>" . __('Preview to select the center of the map and the default position of an agent without gis data') . "</h3>"; print_button(__("Load preview map"),'button_refresh', false, 'refreshMapView();', 'class="sub"'); echo "<br /><br />"; echo "<div id='map' style='width: 300px; height: 300px; border: 1px solid black; float: left'></div>"; $table->width = '60%'; $table->data = array(); //$table->colspan[0][3] = 3; $table->data[0][0] = ''; $table->data[0][1] = __('Map Center').print_help_tip (__('Position to center the map when the map is opened'), true) ; $table->data[0][2] = __("Default position for agents without GIS data"); $table->data[1][0] = __('Change in the map'). print_help_tip (__('This selects what to change by clicking on the map'), true); $table->data[1][1] = print_radio_button_extended('radio_button', 1, '', 1, false, "changeSetManualPosition(true, false)", '', true); $table->data[1][2] = print_radio_button_extended('radio_button', 2, '', 0, false, "changeSetManualPosition(false, true)", '', true); $table->data[2][0] = __('Latitude') . ":"; $table->data[2][1] = print_input_text ('center_latitude', $mapConnection_centerLatitude, '', 10, 10, true); $table->data[2][2] = print_input_text ('default_latitude', $mapConnection_defaultLatitude, '', 10, 10, true); $table->data[3][0] = __('Longitude') . ":"; $table->data[3][1] = print_input_text ('center_longitude', $mapConnection_centerLongitude, '', 10, 10, true); $table->data[3][2] = print_input_text ('default_longitude', $mapConnection_defaultLongitude, '', 10, 10, true); $table->data[4][0] = __('Altitude') . ":"; $table->data[4][1] = print_input_text ('center_altitude', $mapConnection_centerAltitude, '', 10, 10, true); $table->data[4][2] = print_input_text ('default_altitude', $mapConnection_defaultAltitude, '', 10, 10, true); print_table($table); echo '<div class="action-buttons" style="clear: left; width: 90%; float: left;">'; print_submit_button (__('Save'), '', false, 'class="sub save"'); echo '</div>'; echo "</form>"; ?> <script type="text/javascript" src="http://dev.openlayers.org/nightly/OpenLayers.js"></script> <?php require_javascript_file('openlayers.pandora'); ?> <script type="text/javascript"> var setCenter = true; var centerPoint = null; var setGISDefaultPosition = false; var GISDefaultPositionPoint = null; /** * Set the item to change, the center point or the center default. * * @param boolean stCenter Set center point for changing. * @param boolean stGISDefault Set GISDefault point for changing. * * @return None */ function changeSetManualPosition(stCenter, stGISDefault) { setCenter = stCenter; setGISDefaultPosition = stGISDefault; } /** * The callback function when click the map. And make or move the points. * * @param object e The object of openlayer, that it has the parammeters of click. * * @return None */ function changePoints(e) { var lonlat = map.getLonLatFromViewPortPx(e.xy); lonlat.transform(map.getProjectionObject(), map.displayProjection); //transform the lonlat in object proyection to "standar proyection" if (setCenter) { //Change the fields center_latitude = $('input[name=center_latitude]').val(lonlat.lat); center_longitude = $('input[name=center_longitude]').val(lonlat.lon); if (centerPoint == null) { centerPoint = js_addPointExtent('temp_layer', '<?php echo __('Center'); ?>', lonlat.lon, lonlat.lat, 'images/dot_green.png', 11, 11, 'center', ''); } else { //return to no-standar the proyection for to move centerPoint.move(lonlat.transform(map.displayProjection, map.getProjectionObject())); } } if (setGISDefaultPosition) { //Change the fields center_latitude = $('input[name=default_latitude]').val(lonlat.lat); center_longitude = $('input[name=default_longitude]').val(lonlat.lon); if (GISDefaultPositionPoint == null) { GISDefaultPositionPoint = js_addPointExtent('temp_layer', '<?php echo __('Default'); ?>', lonlat.lon, lonlat.lat, 'images/dot_red.png', 11, 11, 'default', ''); } else { //return to no-standar the proyection for to move GISDefaultPositionPoint.move(lonlat.transform(map.displayProjection, map.getProjectionObject())); } } } /** * Function to show and refresh the map. The function give the params for map of * fields. And make two points, center and default. */ function refreshMapView() { //Clear the previous map. map = null; $("#map").html(''); //Clear the points. centerPoint = null; GISDefaultPositionPoint = null; //Change the text to button. $("input[name=button_refresh]").val('<?php echo __("Refresh preview map");?>'); //Obtain data of map of fields. inital_zoom = $('input[name=initial_zoom]').val(); num_levels_zoom =$('input[name=num_levels_zoom').val(); center_latitude = $('input[name=center_latitude]').val(); center_longitude = $('input[name=center_longitude]').val(); center_altitude = $('input[name=center_altitude]').val(); var objBaseLayers = Array(); objBaseLayers[0] = Array(); objBaseLayers[0]['type'] = $('select[name=sel_type] :selected').val(); objBaseLayers[0]['name'] = $('input[name=name]').val(); objBaseLayers[0]['url'] = $('input[name=url]').val(); //objBaseLayers[0]['gmap_type = ''; objBaseLayers[0]['bb_left'] = $('input[name=bb_left]').val(); objBaseLayers[0]['bb_right'] = $('input[name=bb_right]').val(); objBaseLayers[0]['bb_bottom'] = $('input[name=bb_bottom]').val(); objBaseLayers[0]['bb_top'] = $('input[name=bb_top]').val(); objBaseLayers[0]['image_width'] = $('input[name=image_width]').val(); objBaseLayers[0]['image_height'] = $('input[name=image_height]').val(); arrayControls = null; arrayControls = Array('Navigation', 'PanZoom', 'MousePosition'); js_printMap('map', inital_zoom, num_levels_zoom, center_latitude, center_longitude, objBaseLayers, arrayControls); layer = js_makeLayer('temp_layer', true, null); centerPoint = js_addPointExtent('temp_layer', '<?php echo __('Center'); ?>', $('input[name=center_longitude]').val(), $('input[name=center_latitude]').val(), 'images/dot_green.png', 11, 11, 'center', ''); GISDefaultPositionPoint = js_addPointExtent('temp_layer', '<?php echo __('Default'); ?>', $('input[name=default_longitude]').val(), $('input[name=default_latitude]').val(), 'images/dot_red.png', 11, 11, 'default', ''); js_activateEvents(changePoints); } /** * Dinamic write the fields in form when select a type of connection. */ function selMapConnectionType() { $('#form_map_connection_type').fadeOut("normal"); switch ($('#sel_type :selected').val()) { case 'OSM': $('#form_map_connection_type').html('<?php echo $optionsConnectionOSMTable; ?>').hide(); break; case 'Gmap': /* var script = document.createElement("script"); script.type = "text/javascript"; script.src = 'http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'; script.src = 'http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxTS6gjckBmeABOGXIUiOiZObZESPg'; document.body.appendChild(script); */ $('#form_map_connection_type').html('<?php echo $optionsConnectionGmapTable; ?>').hide(); break; case 'Static_Image': $('#form_map_connection_type').html('<?php echo $optionsConnectionImageTable; ?>').hide(); break; default: $('#form_map_connection_type').html('').hide(); break; } $('#form_map_connection_type').fadeIn("normal"); } </script>