#! /usr/bin/perl

# ---------------------------------
# SHARK_COUNTER
# Copyright (c)2001 Svatopluk Benes
# ---------------------------------


	use CGI qw/:standard/;
	use DBI;
  use URI::Escape;
  require "../slib/sharkmysqlconn.pl";
	require "../slib/sharkfn.pl";


  &SharkConnect;

	@nyni = localtime;
	$DatumDnes = (1900 + @nyni[5])."/".(1 + @nyni[4])."/".(@nyni[3]);
	$Pulhodina =  int(@nyni[1] / 30)*30;
	$CasDnes = sprintf("%02s",@nyni[2]).":".sprintf("%02s",$Pulhodina);
	$RokDnes = 1900 + @nyni[5];
	$MesDnes = 1 + @nyni[4];
	$DenDnes = @nyni[3];

  my $logIPAdresa = @ENV{'REMOTE_ADDR'};
  if ( defined @ENV{'HTTP_X_FORWARDED_FOR'} ) {       # v pripade port forvardingu je adresa tady
    $logIPAdresa = @ENV{'HTTP_X_FORWARDED_FOR'}
  }
	
	$sharkId = url_param('sharkid');
	$myParKod = FNPredejPar(url_param('kod'),"");
	$myParUserName = FNPredejPar(url_param('username'),"");
	
	# urceni systemu a browseru
	$Browser = @ENV{'HTTP_USER_AGENT'};
	if ( $Browser =~ m/Win/i ) {$OsBr = "W"} else {$OsBr = "X"}
	if ( $Browser =~ m/MSIE/i ) {$OsBr .= "E"} else {$OsBr .= "X"}
	if ( $Browser =~ m/Mozzila/i ) {$OsBr .= "M"} else {$OsBr .= "X"}
	if ( $Browser =~ m/Opera/i ) {$OsBr .= "O"} else {$OsBr .= "X"}

	# urceni pripadneho username zakaznika	
	if ( %Zakaznik = cookie(-name=>$sharkId.'_zaklogin') )
	{
		$UserName = @Zakaznik{'username'};
	}
	else
	{		   
		$UserName = "";
	}
	
	@data = ();
	# navstevy za po pulhodinach 
	$dotaz = $dbmy->prepare ("SELECT 1 FROM ".$sharkId."_counter WHERE den = ? AND mesic = ? AND rok = ? AND cas = ? AND  kod = ? AND adresa = ?");
	$dotaz->execute( $DenDnes,$MesDnes,$RokDnes, $CasDnes, $myParKod, $logIPAdresa);
	@data = $dotaz->fetchrow_array();
	$chch = @data; #$dbmy->state; # $dbmy->errstr;
	if ( @data[0] != 1)          
	{
		$dotaz = $dbmy->prepare ( "LOCK TABLES ".$sharkId."_counter WRITE");
		$dotaz->execute;

		$dotaz = $dbmy->prepare ("INSERT INTO ".$sharkId."_counter (rok,mesic,den,cas,kod,adresa,browser) values (?,?,?,?,?,?,?)");
		$dotaz->execute( $RokDnes, $MesDnes, $DenDnes, $CasDnes, uri_unescape($myParKod), $logIPAdresa, $OsBr);

		$dotaz = $dbmy->prepare ( "UNLOCK TABLES");
		$dotaz->execute;
	}
		
	@data = ();
	# unikatni IP za den v domene

	if ($myParUserName eq "")	# pokud neni prihlaseny uzivatel, zkusi se najit podle IP adresy předchozi pristup
	{
		 
		$dotaz = $dbmy->prepare ("SELECT username FROM ".$sharkId."_ipcounter WHERE adresa = ? AND username <> '' ORDER BY rok desc,mesic desc,den DESC LIMIT 1");
		$dotaz->execute( $logIPAdresa );
		@data = $dotaz->fetchrow_array();
		@data[0];
		if ( @data[0] ne "" && index(@data[0],'*') < 0) { $myParUserName = @data[0]."*"; } else  { $myParUserName = @data[0]; }		
	}	

	$dotaz = $dbmy->prepare ("SELECT 1 FROM ".$sharkId."_ipcounter WHERE den = ? AND mesic = ? AND rok = ? AND adresa = ? AND username = ?");
	$dotaz->execute( $DenDnes,$MesDnes,$RokDnes, $logIPAdresa, $myParUserName);
	@data = $dotaz->fetchrow_array();
	if ( @data[0] != 1)
	{
		$dotaz = $dbmy->prepare ( "LOCK TABLES ".$sharkId."_ipcounter WRITE");
		$dotaz->execute;
	
		$dotaz = $dbmy->prepare ("INSERT INTO ".$sharkId."_ipcounter (rok,mesic,den,adresa,pocet,username) values (?,?,?,?,?,?)");
		$dotaz->execute( $RokDnes, $MesDnes, $DenDnes, $logIPAdresa, 1, $myParUserName);

		$dotaz = $dbmy->prepare ( "UNLOCK TABLES");
		$dotaz->execute;
	} 
	else
	{
		$dotaz = $dbmy->prepare ( "LOCK TABLES ".$sharkId."_ipcounter WRITE");
		$dotaz->execute;
	
		$dotaz = $dbmy->prepare ("UPDATE ".$sharkId."_ipcounter SET pocet=pocet+1 WHERE den = ? AND mesic = ? AND rok = ? AND adresa = ? AND username = ?");
		$dotaz->execute( $DenDnes, $MesDnes, $RokDnes, $logIPAdresa, $myParUserName );

		$dotaz = $dbmy->prepare ( "UNLOCK TABLES");
		$dotaz->execute;
	}
		
