<?php
include 'common.php';

function TargetVersionCheck($targetVersion, $clientVersion)
{
	$targetVer = explode('.', $targetVersion);
	$clientVer = explode('.', $clientVersion);

	if ($targetVer[0] < $clientVer[0])
	{
		return true;
	}
	else if ($targetVer[0] == $clientVer[0])
	{
		if ($targetVer[1] < $clientVer[1])
		{
			return true;
		}
		else if ($targetVer[1] == $clientVer[1])
		{
			if ($targetVer[2] <= $clientVer[2])
			{
				return true;
			}
		}
	}

	return false;
}
function FindLevelUpData($dbhandle, $event_id, $character_uid)
{
	$stmt = $dbhandle->prepare("SELECT count(*) AS cnt FROM event_levelup_data WHERE event_id!=? AND character_uid=?");	
	$stmt->bind_param("ii", $event_id, $character_uid);
	$stmt->execute();
	$result = $stmt->get_result();
	$num = $result->fetch_assoc();
	
	$return = false;
	if( $num["cnt"] > 0 )
	{
		$return = true;
	}
	
	mysqli_stmt_free_result($stmt);
	
	return $return;
}

function ServerCamp($transfer, $server_group_id, $client_version)
{
	//$transfer == 0  //공동
	//$transfer == 1  //서버 이전O
	//$transfer == 2  //서버 이전X
	if ($transfer == 0) return true;

	if ($client_version == 1)
	{
		if ($server_group_id < 200)
		{
			//V1 서버이전X
			if ($transfer == 2)
			{
				return true;
			}
			return false;
		}
		else if ($server_group_id >= 200)
		{
			//V1 서버이전O
			if ($transfer == 1)
			{
				return true;
			}
			return false;
		}
	}
	else if ($client_version == 2)
	{
		if ($server_group_id < 200)
		{
			//V2 서버이전O
			if ($transfer == 1)
			{
				return true;
			}
			return false;
		}
		else if ($server_group_id >= 200)
		{
			//V2 서버이전X
			if ($transfer == 2)
			{
				return true;
			}
			return false;
		}
	}

	return false;
}

function CheckServerGroupID($event_server_group_id, $server_group_id)
{
	//$event_server_group_id == 0  //공동
	if ($event_server_group_id == 0) return true;

	return ($event_server_group_id == $server_group_id);
}

function EventInfo($character_uid, $lang, $ver, $is_boosting, $server_group_id, $client_version, $now){
	//Connect DB
	$dbhandle = DB_Connect();
	
	
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");

	mysqli_query($dbhandle,"set session character_set_connection=utf8;");
	mysqli_query($dbhandle,"set session character_set_results=utf8;");
	mysqli_query($dbhandle,"set session character_set_client=utf8;");
	
	$strQuery = "SELECT * FROM event_info ORDER BY priority DESC";
	
	//echo $strQuery;
	//return;
	
	$dataArray = array();

	$count = 0;
	//Query Result
	if($result = mysqli_query($dbhandle, $strQuery))
	{
		$count = 0;
		$is_levelUpEvent = false;
		while($row=mysqli_fetch_array($result, MYSQLI_ASSOC))
		{
			if ($is_boosting === "0" && $row["only_boost"] == 1)
			{
				continue;
			}
			$check = TargetVersionCheck($row["version"], $ver);
			if (!$check)
			{
				continue;
			}

			$transfer = $row["server_transfer"];
			if (ServerCamp($transfer, $server_group_id, $client_version) == false)
			{
				continue;
			}

			$event_server_group_id = $row["server_group_id"];
			if (CheckServerGroupID($event_server_group_id, $server_group_id) == false)
			{
				continue;
			}

			$newnow = new DateTime($now); //현지시간
			$startTime = new DateTime($row["start_time"]." 00:00:00");
			$endTime = new DateTime($row["end_time"]." 23:59:59");

			if (($startTime->getTimestamp() <= $newnow->getTimestamp()) && ($newnow->getTimestamp() <= $endTime->getTimestamp()))
			{
				if ($row["type"] === "LEVEL_UP")
				{
					if ($is_levelUpEvent == true || FindLevelUpData($dbhandle, $row["id"], $character_uid)) //기존에 levelup 이벤트를 한적이 있으면 참여할 수 없다
					{
						continue;
					}
					$is_levelUpEvent = true;
				}
				
				$count++;
				$title = "";
				if ($lang === 'kr')
				{
					$title = $row["title_kr"];
				}
				else if ($lang === 'th')
				{
					$title = $row["title_th"];
				}
				else
				{
					$title = $row["title_default"];
				}
				
				array_push($dataArray, $row["id"].",". $row["type"].",".$title);
			}
		}
		
	}
	
	mysqli_free_result($result);

	if($count <= 0  )
	{
		$return = "NOT_EXIST_EVENT";
		$response = array('result'=>$return,'error'=>"",'list'=>$dataArray);
	}
	else
	{
		$return = "EVENT_LIST_OK";
		$response = array('result'=>$return,'error'=>"",'list'=>$dataArray);
	}
	
	$isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
	(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
	($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain');
 
	echo json_encode($response);
		
	mysqli_close($dbhandle);
}

$character_uid = $_GET['character_uid'];
$lang = $_GET['lang'];
$ver = $_GET['ver'];
$is_boosting = $_GET['boosting'];
$server_group_id = $_GET['server_group_id'];
$client_version = $_GET['client_version'];
$now = $_GET['now'];

if(CheckValidatedServerIP())
{
	EventInfo($character_uid, $lang, $ver, $is_boosting, $server_group_id, $client_version, $now);
}
else
{
	$response = "INVALIDATED_SERVER";
	$error = "CheckValidatedServerIP ERROR";
	$isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
	(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false: false;
	($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain'); 
 
	echo json_encode(array(	'result'=>$response,'error'=>$error	));
}


?>