<?php
include 'common.php';

function AlreadyExistAccount($dbhandle, $account_id, $platform)
{
	$account_id = mysqli_real_escape_string($dbhandle,$account_id);
	
	
	$stmt = $dbhandle->prepare("select count(*) as cnt from account where user_id=? and platform=?");	
	$stmt->bind_param("ss", $account_id, $platform);
	$stmt->execute();
	$result = $stmt->get_result();
	$num = $result->fetch_assoc();
	
	mysqli_stmt_free_result($stmt);
	
	if($num["cnt"] > 0)
	{
		return true;
	}
	
	return false;
}


function UpdateLoginKey($dbhandle, $account_id, $ip, $new_login_key)
{
		
	//echo date_default_timezone_get();
	//date_default_timezone_set("Asia/Seoul");
	
	$login_key = rand();
	$login_time = date('Y-m-d H:i:s');
	
	
	$stmt = $dbhandle->prepare("update account set login_key=?, ip=? , login_time=? where user_id=?");
	$stmt->bind_param("ssss", $new_login_key, $ip, $login_time, $account_id);
	$result = $stmt->execute();
	$stmt->close();
	
	

	/* $update_query = "update account set login_key='".$new_login_key."', ip='".$ip."' , login_time='".date('Y-m-d H:i:s')."' where user_id='".$account_id."'";


	//Query Result
	$result = @mysqli_query($dbhandle,$update_query);
 */
	

	if($result)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function CreateAccountId($dbhandle, $account_id,$nick_name, $platform, $ip, $new_login_key)
{

	//$dbhandle = DB_Connect();
	
	//Select DB
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");
	
	
	$login_time = date('Y-m-d H:i:s');

	$stmt = $dbhandle->prepare("insert into account (user_id, nickname, platform, ip, login_key, login_time)  values(?,?,?,?,?,?)");
	$stmt->bind_param("ssssss", $account_id, $nick_name, $platform, $ip, $new_login_key, $login_time);
	$result = $stmt->execute();
	$stmt->close();
	
	if($result)
	{
		return true;
	}
	else
	{
		return false;
		
	}
	
	
	/* $insert_query = "insert into account (user_id, nickname, platform, ip, login_key, login_time) 
			  values('".$account_id."','".$nick_name."','".$platform."','".$ip."','".$new_login_key."','".date('Y-m-d H:i:s')."')";

	//Query Result
	$result = @mysqli_query($dbhandle,$insert_query);
	
	
	if($result == 1)
	{
		return true;
	}
	else
	{
		return false;
	}	 */
}

function LoginCheck($account_id,$nick_name, $platform, $ip){

	$dbhandle = DB_Connect();
	//Select DB
	$db_selected = mysqli_select_db($dbhandle, DB_NAME)
	or die("Could not select db");

	$new_login_key = rand();
	$result = false;
	if(AlreadyExistAccount($dbhandle, $account_id, $platform))
	{
		//echo "update ";
		$result = UpdateLoginKey($dbhandle, $account_id,$ip, $new_login_key);
	}
	else
	{
		//echo "create";
		$result = CreateAccountId($dbhandle, $account_id,$nick_name,$platform, $ip, $new_login_key);
	}
	
	if ($result)
	{
		$response = "LOGIN_OK";
		$error = "";
	}
	else
	{
		$response = "LOGIN_FAIL";
		$error = "MYSQL_QUERY_ERROR";
		$new_login_key = "";
	}
	
	mysqli_close($dbhandle);
 
    $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,'login_key'=>$new_login_key,'error'=>$error));

}

$json = json_decode(file_get_contents('php://input'));
$account_id = $json->account_id;
$nick_name = $json->nick_name;
$platform = $json->platform;
$ticket = $json->ticket;


if (CheckTicket($platform, $account_id, $ticket))
{
	LoginCheck($account_id,$nick_name, $platform, $_SERVER['REMOTE_ADDR']);	
}
else
{
	$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'=>'LOGIN_FAIL','login_key'=>'','error'=>'Invalid ticket'));
}

?>