www/spotrep/map/index.php
e31669d9
 <?php
 if(file_exists("../data/spotrep-".strtoupper(base64_decode($_GET['d'])).".txt")) {
 	$dfile = "../data/spotrep-".strtoupper(base64_decode($_GET['d'])).".txt";
 	$dcall = base64_decode($_GET['d']);
 } else {
 	$dfile = "../data.txt";
 	$dcall = "ALL";
 }
 if (isset($_GET['ms'])) {
 	echo md5_file($dfile);
 	die();
 }
 ?>
 <!DOCTYPE html>
 <html> <head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <title>SpotRep2 Map - K9RCP</title>
   <link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
   <style>
 
 * { margin: 0; padding: 0; }
   #mapid { height: 100%; width: 100%; position: absolute !important; }
   body {
    height: 100%;
    overflow: hidden;
    width: 100%;
 }
   </style>
   <!-- Google Font: Source Sans Pro -->
   <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet">
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
    integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
    crossorigin=""/>
     <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
    integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
    crossorigin=""></script>
 </head>
 <body>
     	 <div style="background-color: black;" id="mapid" width="600px" height="600px"></div>
          <script>
 <?php
 if(isset($_COOKIE['mapzoom']) && isset($_COOKIE['mapcenter'])) { ?>
 var map = L.map('mapid').setView([<?php echo str_replace(array("LatLng(", ")"), "", $_COOKIE['mapcenter']); ?>], <?php echo $_COOKIE['mapzoom']; ?>);
 <?php } else { ?>
 var map = L.map('mapid').setView([45.290899, -122.976504], 8);
 
 <?php } ?>
 
 L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
     attribution: 'SpotRep Mapping by K9RCP', // Update this with your mapping attribution
     maxZoom: 18,
     id: 'mapbox/streets-v11',
     tileSize: 512,
     zoomOffset: -1,
     accessToken: '' // You will need to get a accessToken from your mapping provider.
 }).addTo(map);
 
 map.addEventListener('mousemove', function(ev) {
 	document.cookie = "mapcenter="+map.getCenter();
 	document.cookie = "mapzoom="+map.getZoom();
 });
 
 
 	var LeafIcon = L.Icon.extend({
 		options: {
 			iconSize:     [18, 18],
 		}
 	});
 
 
 
 <?php
 
 $rawdata = explode("\n", file_get_contents($dfile));
 
 foreach ($rawdata as &$dataraw2) {
 	if(strlen($dataraw2) > 3) {
 		$data = explode("|", $dataraw2);
         	echo "L.marker([".str_replace("\n", "", explode("=", $data[5])[1]).", ".str_replace("\n", "", explode("=", $data[6])[1])."]).bindPopup('<b>Callsign: </b>".str_replace("\n", "", explode("=", $data[4])[1])." <br /><br />";
 		echo "<b>Subject: </b>".str_replace("\n", "", explode("=", $data[2])[1])." <br />";
 
 		for ($i = 5; $i < (count($data) - 0); $i++) {
 			echo trim(str_replace(array("\n"."\r"), "", "<b>".htmlspecialchars(str_replace(array(":T", ":M"), "", explode("=", $data[$i])[0])).": </b>".htmlspecialchars(str_replace(array("'", ")", ",","(","\n"), "", explode("=", $data[$i])[1]))))."<br />";
 		}
 		echo "').addTo(map);\n";
 	}
 }
 ?>
 
 var updateXml;
 
 function createRequestObject() {
     var ro;
     var browser = navigator.appName;
     if (browser == "Microsoft Internet Explorer") {
         ro = new ActiveXObject("Microsoft.XMLHTTP");
     } else {
         ro = new XMLHttpRequest();
     }
     return ro;
 }
 var xmlHttp = createRequestObject();
 var lastapidata = null;
 var lastimagedata = null;
 function runapipull() {
     xmlHttp.open('get', '?d=<?php echo str_replace("=", "", base64_encode($dcall)); ?>&ms=' + new Date().getTime());
     xmlHttp.onreadystatechange = readapidata;
     xmlHttp.send(null);
 }
 
 function readapidata() {
     if (xmlHttp.readyState == 4) {
 		data = xmlHttp.responseText;
 
 		if (data != "<?php echo md5_file($dfile); ?>") {
 			location.reload();
 	        }
 		clearInterval(updateXml);
 		updateXml = setInterval( function(){ runapipull(); }, 5000 );
         //setTimeout("runapipull()", 15000);
     }
 }
 runapipull();
         </script>
 
       </div>
 
 
 </body>
 </html>