<?php 
$recievers = array();

$recievers[] = array(
	'ip' => '192.168.1.80',
	'name' => 'Vu+'
);
$recievers[] = array(
	'ip' => '192.168.1.89',
	'name' => 'xSarius'
);

if (isset($_GET['sendMessage'])) {
	$json = array();
	if (isset($_GET['id']) && isset($_GET['message'])) {
		$key = $_GET['id'];		
		if ($recievers[$key]) {
			$status_url = 'http://' . $recievers[$key]['ip'] . '/web/powerstate';
			$send_message_url = 'http://' . $recievers[$key]['ip'] . '/web/message?text=' . urlencode($_GET['message']) . '&type=2';
			if (@get_headers($status_url)) {
				$result = simplexml_load_file($send_message_url);
				if ($result) {
					$json['success'][$key]['result'] = trim($result->e2state);
					$json['success'][$key]['text'] = trim($result->e2statetext);
				}
			} else {
				$json['error'][$key] = 'Niet gevonden!';
			}
		}	
	}
	
	header('Content-type: application/json', true);
	echo json_encode($json);
	
} elseif (isset($_GET['toggleStatus'])) {
	$json = array();
	if (isset($_GET['id']) && isset($_GET['toggleStatus'])) {
		$key = $_GET['id'];
		if ($recievers[$key]) {
			$status_url = 'http://' . $recievers[$key]['ip'] . '/web/powerstate';
			$set_status_url = 'http://' . $recievers[$key]['ip'] . '/web/powerstate?newstate=' . $_GET['toggleStatus'];
			$zender_url = 'http://' . $recievers[$key]['ip'] . '/web/getcurrent';
			if (@get_headers($set_status_url)) {
				$result = simplexml_load_file($status_url);
				if ($result) {
					$status_standby = trim($result->e2instandby);
					$json['success'][$key]['status'] = $status_standby == 'false' ? false:true;
				}
				if (@get_headers($zender_url)) {
					$result = simplexml_load_file($zender_url);
					if ($result) {
						$zender = trim($result->e2service->e2servicename);
						$json['success'][$key]['zender'] = $zender;
						$ref = trim($result->e2service->e2servicereference);
						$json['success'][$key]['ref'] = $ref;
						$json['success'][$key]['ip'] = $recievers[$key]['ip'];
					}
				}			
			} else {
				$json['error'][$key] = 'Niet gevonden!';
			}
		}		
	}
	
	header('Content-type: application/json', true);
	echo json_encode($json);
	
} elseif (isset($_GET['getStatus'])) {
	$json = array();
	foreach ($recievers as $key => $reciever) {
		$status_url = 'http://' . $reciever['ip'] . '/web/powerstate';
		$zender_url = 'http://' . $reciever['ip'] . '/web/getcurrent';
		if (@get_headers($status_url)) {
			$result = simplexml_load_file($status_url);
			if ($result) {
				$status_standby = trim($result->e2instandby);
				$json['success'][$key]['status'] = $status_standby == 'false' ? false:true;
			}
			if (@get_headers($zender_url)) {
				$result = simplexml_load_file($zender_url);
				if ($result) {
					$zender = trim($result->e2service->e2servicename);
					$json['success'][$key]['zender'] = $zender;
					$ref = trim($result->e2service->e2servicereference);
					$json['success'][$key]['ref'] = $ref;
					$json['success'][$key]['ip'] = $reciever['ip'];
				}
			}
		} else {
			$json['error'][$key] = 'Niet gevonden!';
		}
	}

	header('Content-type: application/json', true);
	echo json_encode($json);
} else {
?>
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<title>Status Check</title>
</head>
<body>
<h3>Check Status</h3>
<div class="container">
  <div class="row">
	<?php foreach ($recievers as $key => $reciever) { ?>
	<div class="col-md-4" id="reciever<?php echo $key; ?>">
	  <div class="card">
  		<div class="card-header"><?php echo $reciever['name']; ?><a href="http://<?php echo $reciever['ip']; ?>" target="_blank"><span class="pull-right"><i class="fa fa-external-link"></i></span></a></div>
		<div class="card-body">
		 <p class="card-title">IP <?php echo $reciever['ip']; ?></p>
		 <p><span class="status"></span></p>
		 <p><span class="zender"></span></p>
		 <p class="screenshot"></p>
		 <div>
		   <form class="form-inline" id="form<?php echo $key; ?>" style="display:none;">
		 	<input type="text" class="form-control mb-2" name="message" placeholder="Uw bericht" value="" />
		 	<button type="button" class="btn btn-secondary mb-2" onclick="sendMessage(<?php echo $key; ?>);">Stuur</button>
		   </form>
		 </div>
		</div>
	  </div>
	</div>
	<?php } ?>
  </div>
  <div class="row">
    <div class="col-md-12">
	  <p class="card-body text-center"><button class="btn btn-primary" id="status-refresh" onclick="getStatus();">Refresh</button></p>
	</div>
  </div>
  <div class="row">
    <div class="col-md-12">
	  <p class="card-body text-center" id="busy"></p>
	</div>
  </div>
</div>
<script>
function toggleStatus(id, status) {
	d = new Date();
		$.ajax({
			url: 'status.php?toggleStatus=' + status + '&id=' + id,
			type: 'get',
			dataType: 'json',
			beforeSend: function() {
				$('#busy').html('loading ...');
			},
			complete: function() {
				$('#busy').html('');
			},
			success: function(json) {
				if (json['success']) {
					for (i in json['success']) {
						if (json['success'][i]['status']) {
							$('#reciever' + i + ' .status').html('<div class="alert alert-danger"><i class="fa fa-times-circle"></i> Standby <a href="#" onclick="toggleStatus('+ i + ', 4); return false;"><span class="pull-right"><i class="fa fa-power-off"></i></span></a></div>');
							$('#form' + i).hide();
						} else {
							$('#reciever' + i + ' .status').html('<div class="alert alert-success"><i class="fa fa-check-circle"></i> Aan <a href="#" onclick="toggleStatus('+ i + ', 0); return false;"><span class="pull-right"><i class="fa fa-power-off"></i></span></div>');
							$('#form' + i).show();
						}
						if (json['success'][i]['zender']) {
							$('#reciever' + i + ' .zender').html('<div class="alert alert-success">' + json['success'][i]['zender'] + '<span class="pull-right"><a target="_blank" href="http://' + json['success'][i]['ip'] + '/web/stream.m3u?ref=' + json['success'][i]['ref'] + '&amp;name=' + json['success'][i]['zender'] + '" title="Stream: ' + json['success'][i]['zender'] + '"><i class="fa fa-tv"></i></a></span></div>');
							$('#reciever' + i + ' .screenshot').html('<img class="img-fluid img-thumbnail" src=""/>');
							$('#reciever' + i + ' .screenshot img').attr('src', 'http://' + json['success'][i]['ip'] + '/grab?format=jpg&t=' + d.getTime());
							
						} else {
							$('#reciever' + i + ' .zender').html('');
							$('#reciever' + i + ' .screenshot').html('');
						}
					}

				}
				if (json['error']) {
					for (i in json['error']) {
							$('#reciever' + i + ' .status').html('<div class="alert alert-danger"><i class="fa fa-check-circle"></i> ' + json['error'][i] + '</div>');
							$('#reciever' + i + ' .zender').html('');
							$('#reciever' + i + ' .screenshot').html('');
							$('#form' + i).hide();
					}
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		}); 
}	
function getStatus() {
	d = new Date();
		$.ajax({
			url: 'status.php?getStatus=1',
			type: 'get',
			dataType: 'json',
			beforeSend: function() {
				$('#busy').html('loading ...');
			},
			complete: function() {
				$('#busy').html('');
			},
			success: function(json) {
				if (json['success']) {
					for (i in json['success']) {
						if (json['success'][i]['status']) {
							$('#reciever' + i + ' .status').html('<div class="alert alert-danger"><i class="fa fa-times-circle"></i> Standby <a href="#" onclick="toggleStatus('+ i + ', 4); return false;"><span class="pull-right"><i class="fa fa-power-off"></i></span></div>');
							$('#reciever' + i + ' #form' + i).hide();
						} else {
							$('#reciever' + i + ' .status').html('<div class="alert alert-success"><i class="fa fa-check-circle"></i> Aan <a href="#" onclick="toggleStatus('+ i + ', 0); return false;"><span class="pull-right"><i class="fa fa-power-off"></i></span></div>');
							$('#reciever' + i + ' #form' + i).show();
						}
						if (json['success'][i]['zender']) {
							$('#reciever' + i + ' .zender').html('<div class="alert alert-success">' + json['success'][i]['zender'] + '<span class="pull-right"><a target="_blank" href="http://' + json['success'][i]['ip'] + '/web/stream.m3u?ref=' + json['success'][i]['ref'] + '&amp;name=' + json['success'][i]['zender'] + '" title="Stream: ' + json['success'][i]['zender'] + '"><i class="fa fa-tv"></i></a></span></div>');
							$('#reciever' + i + ' .screenshot').html('<img class="img-fluid img-thumbnail" src=""/>');
							$('#reciever' + i + ' .screenshot img').attr('src', 'http://' + json['success'][i]['ip'] + '/grab?format=jpg&t=' + d.getTime());
						} else {
							$('#reciever' + i + ' .zender').html('');
							$('#reciever' + i + ' .screenshot').html('');
						}
					}

				}
				if (json['error']) {
					for (i in json['error']) {
							$('#reciever' + i + ' .status').html('<div class="alert alert-danger"><i class="fa fa-check-circle"></i> ' + json['error'][i] + '</div>');
						
					}
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		}); 
}

function sendMessage(id) {
// messagetext=Text of Message
// messagetype=Number from 0 to 3, 0= Yes/No, 1= Info, 2=Message, 3=Attention
// timeout=Can be empty or the Number of seconds the Message should disappear after.	

// <e2state>True</e2state>
// <e2statetext>Bericht succesvol verstuurd!</e2statetext>

var message = $('#form' + id + ' input[type=text][name=message]').val();
		$.ajax({
			url: 'status.php?sendMessage=1&id=' + id,
			type: 'get',
			data: 'message=' + message,
			dataType: 'json',
			beforeSend: function() {
				$('#busy').html('loading ...');
			},
			complete: function() {
				$('#busy').html('');
			},
			success: function(json) {
				if (json['success']) {
					$('#form' + id + ' input[type=text][name=message]').val('');
					for (i in json['success']) {
						if (json['success'][i]['result'] == 'True') {
							$('#reciever' + i + ' #form' + i).after('<div class="alert alert-success alert-dismissible fade show" role="alert"><i class="fa fa-check-circle"></i>' + json['success'][i]['text'] + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>');
						} else {
							$('#reciever' + i + ' #form' + i).after('<div class="alert alert-danger alert-dismissible fade show" role="alert"><i class="fa fa-check-circle"></i>' + json['success'][i]['text'] + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>');
						}
					}
					
				}
				if (json['error']) {
					for (i in json['error']) {
							$('#reciever' + i + ' #form' + i).after('<div class="alert alert-danger"><i class="fa fa-check-circle"></i> ' + json['error'][i] + '</div>');
						
					}
				}
			},
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
		}); 


}

getStatus();

</script>
</body></html>
<?php
}
?>