<?php
session_start();

if(is_readable('dynmap_config.json')) {
   $config =  json_decode(file_get_contents('dynmap_config.json'), true);
   $msginterval = $config['webchat-interval'];
}
else if(is_readable('dynmap_config.php')) {
   $lines = file('dynmap_config.php');
   array_shift($lines);
   array_pop($lines);
   $config = json_decode(implode(' ',$lines), true);
   $msginterval = $config['webchat-interval'];
}
else {
   $msginterval = 2000;
}

if(isset($_SESSION['lastchat']))
    $lastchat = $_SESSION['lastchat'];
else
    $lastchat = 0;

if($_SERVER['REQUEST_METHOD'] == 'POST' && $lastchat < time())
{
	$micro = microtime(true);
	$timestamp = round($micro*1000.0);
	
	$data = json_decode(trim(file_get_contents('php://input')));
	$data->timestamp = $timestamp;
	$data->ip = $_SERVER['REMOTE_ADDR'];
	if(isset($_SESSION['userid'])) {
		$uid = $_SESSION['userid'];
		if(strcmp($uid, '-guest-')) {
		   $data->userid = $uid;
		}
	}
	if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
		$data->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	if(is_readable('dynmap_webchat.json')) {
		$old_messages = json_decode(file_get_contents('dynmap_webchat.json'), true);
	}
	if(!empty($old_messages))
	{
		foreach($old_messages as $message)
		{
			if(($timestamp - $config['updaterate'] - 10000) < $message['timestamp'])
				$new_messages[] = $message;
		}
	}
	$new_messages[] = $data;
	file_put_contents('dynmap_webchat.json', json_encode($new_messages));
	$_SESSION['lastchat'] = time()+$msginterval;
	echo "{ \"error\" : \"none\" }";
}
elseif($_SERVER['REQUEST_METHOD'] == 'POST' && $lastchat > time())
{
	header('HTTP/1.1 403 Forbidden');
}
else {
	echo "{ \"error\" : \"none\" }";
}
?>