<?php

global $globalconfig, $curUser;

$dbprefix=$globalConfig['dbprefix'];
$dbname=$globalConfig['dbname'];


$userid=GetUserId($curUser);



$fg=checkTime();
$session=session_id();

if (getenv(HTTP_X_FORWARDED_FOR)) {							
    $ip = getenv(HTTP_X_FORWARDED_FOR); 
} else { 
    $ip = getenv(REMOTE_ADDR);
}	
	
$ipaddress=$ip;

$referrer=$_SERVER["HTTP_REFERER"];

$country=ip2country($ip);

$sessionquery=mysql_query("SELECT * FROM ".$dbprefix."sessions WHERE session='$session'");

if (mysql_num_rows($sessionquery)<1){

$first_ip=$_SERVER['REMOTE_ADDR']; 
$hostname=gethostbyaddr($first_ip); 
		
mysql_query("INSERT INTO ".$dbprefix."sessions VALUES (NULL,NOW(),'','1', '$session','$ipaddress', '$hostname', '$country', '$city', '$N_lat', '$W_long', '$pagecount', NOW(), '$duration','$referrer','$userid')");

DoHostIp($ip);

} else {

global $curUser;

require ("./include/connect_db.php");

mysql_select_db($dbname, $link) or die("couldn't select database");

mysql_query("UPDATE ".$dbprefix."sessions SET pagecount=pagecount+1, updated=NOW(), userid='$userid' WHERE session='$session'");


}

//ALSO KEEP LOG

$sessionquery=mysql_query("SELECT * FROM ".$dbprefix."sessions WHERE session='$session'");
$sessionqueryrow=mysql_fetch_array($sessionquery);
$sessionid=$sessionqueryrow[id];

global $f, $Fname, $Fvalue, $id, $a, $dbprefix, $dbname;

$table=$f;

if ($Fname=="id"){
$record=$Fvalue;
//} elseif ($a=="insert") {
//go get last id of that table
// PROBLEM logged before record added, WILL SOLVE LATER
//SHOW INDEX FROM tbl_name 
//$idquery=mysql_query("SELECT * FROM ".$dbprefix."$table  WHERE userid='$userid' ORDER BY id DESC LIMIT 1");
//$idqueryrow=mysql_fetch_array($idquery);
//$record=$idqueryrow[id]+1; //will not be accurate when 2 people post almost simultaneously
} else {
$record=$id;
}

if (!isset($a)){
$type="view";
}else{
$type=$a; //view, edit, post, delete, comment;
}

if($_GET['admin']=="1"){
$section=1;
}else{
$section=0;
}

SendToLog($table, $record, $section, $type);


















function ip2country($ip){

	global $dbname, $dbprefix;

	//converting ip to ipnumber
	$ipn = sprintf("%u", ip2long($ip));


	require ("./include/connect_db.php");
	mysql_select_db($dbname, $link) or die("couldn't select database");
	
	
	// Query for getting visitor countrycode
	$result=mysql_query("SELECT * FROM ip2country WHERE IP_FROM<=$ipn AND IP_TO>=$ipn LIMIT 1");
   
    // Executing above query
   $resultrow=mysql_fetch_array($result);
   
	$countrycode=$resultrow['COUNTRY_CODE2'];
	
	return $countrycode; //only giving back 2 character country code

}

function checkTime(){
	global $dbname, $dbprefix;
	
	//check inactive time for logged users and logout after x minutes of inactivity

	global $dbprefix;
	
	$session=session_id();
	
	//to be placed in configuration file
	$maxinactivemin=100;
	
	require ("./include/connect_db.php");
	mysql_select_db($dbname, $link) or die("couldn't select database");
	
	$result=mysql_query("SELECT UNIX_TIMESTAMP(updated) as lastlog, UNIX_TIMESTAMP(posted) as firstlog  FROM ".$dbprefix."sessions WHERE session='$session'");
	$resultrow=mysql_fetch_array($result);
	
	$lastlog=$resultrow[lastlog];
	$firstlog=$resultrow[firstlog];
	$nowtime=time();
		
	$inactiveSec=$nowtime-$lastlog;
	$inactivesec2min=$inactiveSec/60;
	
	$loggedinsec=$nowtime-$firstlog;
	$loggedinmin=intval(($nowtime-$firstlog)/60);
	
	mysql_query("UPDATE ".$dbprefix."sessions SET duration='$loggedinsec' WHERE session='$session'");
	
	if ($inactivesec2min>$maxinactivemin) {
	//echo "timout<br />";
	$fg="logout";
	return $fg;
	}
	else {
	
	//no timeout
	//echo "for $loggedinmin minutes";
	
	}
}


function DoHostIp($ip){

			global $dbname, $dbprefix;
		
		require('./classes/geosourceip/geosourceip.php');
	 
    	$geoDetails = GeoIPInformation($ip);
   
		//sample output of the (complete) returned array "geoDetails"
		//general output by
		//						echo $geoDetails['longitude'];
		// for example		
		while(list($key, $val) = each($geoDetails)) {
			
		if($key=="city_and_state"){
		
			if($val=="(Unknown city)"){
			$city="";
			}else{
			$city=$val;
			}
		}
		
		if($key=="latitude"){$N_lat=$val;}
		if($key=="longitude"){$W_long=$val;}
		if($key=="country_code"){$country=$val;}
		
		   //echo $key . ": " . $val . '<br>';
		}	
		
		$session=session_id();
			
		mysql_query("UPDATE ".$dbprefix."sessions SET country='$country', city='$city', N_lat='$N_lat', W_long='$W_long' WHERE session='$session'");
}
?>
