<?php
//=================================================================
// KOOBI R7 - CMS - PORTALSOFTWARE(c) DREAM4(r) 
// HTTP://WWW.DREAM4.DE
//=================================================================
// ACHTUNG!
// DIESER PROGRAMMCODE IST URHERRECHTLICH GESCHUETZT
// DIE URHEBERRECHTE LIEGEN BEI DEN JEWEILIGEN AUTOREN.
// AENDERUNGEN IN DIESER DATEI ERFOLGEN AUF EIGENE GEFAHR!
// ES IST NICHT GESTATTET, DEN COPYRIGHTHINWEIS ZU AENDERN ODER ZU
// ENTFERNEN. NUR WENN SIE EINE COPYRIGHTHINWEIS-ENTFERNUNG BESTELLT
// HABEN, DUERFEN SIE DIESEN ENTFERNEN.
//================================================================
// BEI FRAGEN WENDEN SIE SICH BITTE AN: KONTAKT@DREAM4.DE
//=================================================================
if(!defined('BASE_DIR')) exit;
$counter_ablauf = (60 * 60) * 6; // 6 Stunden Reload-Sperre 
$online_ablauf  = 60;
$ignore         = false; 
$did            = date("z");

//=================================================================
// Hits erhoehen
//=================================================================
$GLOBALS['db']->Query("UPDATE "  . PREFIX . "_counter_werte SET Hits=Hits+1 WHERE Tag_Id = '" .  $did  . "' AND Jahr = '" . date('Y') . "'");

//=================================================================
// Counter-Informationen
//=================================================================
$row = $GLOBALS['db']->ArrQuery("SELECT * FROM "  . PREFIX . "_counter_werte WHERE Tag_Id='" . $did . "' AND Jahr='" . date('Y') . "' LIMIT 1");

//=================================================================
// Wenn kein Eintrag, neuen Eintrag setzen
//=================================================================
if(!is_array($row))
{	  
	$GLOBALS['db']->Query("INSERT INTO "  . PREFIX . "_counter_werte 
	(
		Id, 
		Tag,
		Jahr,
		Monat,
		Tag_Id, 
		Tag_Wert, 
		Wochen_Id, 
		Wochen_Wert, 
		Monat_Id, 
		Monat_Wert, 
		Jahr_Id, 
		Jahr_Wert, 
		Gesamt_Wert, 
		Rekord_Datum, 
		Rekord_Wert
	) VALUES (
		'', 
		'" . date('d') . "',
		'" . date('Y') . "',
		'" . date('m') . "',
		'" . $did . "',  
		'0', 
		'" . date("W") . "', 
		'0', 
		'" . date("n") . "', 
		'0', 
		'" . date("Y") . "',  
		'0',  
		'0',  
		NOW(),  
		'0'
	)");
	$row = $GLOBALS['db']->ArrQuery("SELECT * FROM "  . PREFIX . "_counter_werte WHERE Tag_Id='" . $did . "'");
	$ignore = true;
}   
$online    = $GLOBALS['db']->RowQuery("SELECT COUNT(Ip) AS Online FROM "  . PREFIX . "_benutzer_online");
$gesamt    = $GLOBALS['db']->RowQuery("SELECT SUM(Gesamt_Wert) AS Gesamt FROM "  . PREFIX . "_counter_werte");
$gesamt_td = $GLOBALS['db']->RowQuery("SELECT SUM(Gesamt_Wert) AS Gesamt FROM "  . PREFIX . "_counter_werte WHERE Tag_Id='" . $did . "' AND Jahr='" . date("Y") . "'");
$gesamt_ty = $GLOBALS['db']->RowQuery("SELECT SUM(Gesamt_Wert) AS Gesamt FROM "  . PREFIX . "_counter_werte WHERE Jahr='" . date("Y") . "'");
$gesamt_tm = $GLOBALS['db']->RowQuery("SELECT SUM(Gesamt_Wert) AS Gesamt FROM "  . PREFIX . "_counter_werte WHERE Monat='" . date("m") . "'");
$gesamt_tw = $GLOBALS['db']->RowQuery("SELECT SUM(Gesamt_Wert) AS Gesamt FROM "  . PREFIX . "_counter_werte WHERE Wochen_Id='" .date("W") . "'");
$rekord    = $GLOBALS['db']->RowQuery("SELECT Rekord_Wert,Rekord_Datum FROM "  . PREFIX . "_counter_werte ORDER BY Rekord_Wert DESC LIMIT 1");

//=================================================================
// Fuer Template uebergeben (Ueberall verfuegbar)
//=================================================================
if(get_active('counter_display'))
{
	$GLOBALS['tmpl']->assign('Counter_Online', $online->Online);
	$GLOBALS['tmpl']->assign('Counter_Gesamt', $gesamt->Gesamt);
	$GLOBALS['tmpl']->assign('Counter_Heute', $gesamt_td->Gesamt);
	$GLOBALS['tmpl']->assign('Counter_Woche', $gesamt_tw->Gesamt);
	$GLOBALS['tmpl']->assign('Counter_Monat', $gesamt_tm->Gesamt);
	$GLOBALS['tmpl']->assign('Counter_Jahr', $gesamt_ty->Gesamt);
	$GLOBALS['tmpl']->assign('Counter_RekordAm', date("d.m.Y", strtotime($rekord->Rekord_Datum)));
	$GLOBALS['tmpl']->assign('Counter_Rekord', $rekord->Rekord_Wert);
}

$Tag_Id = $row['Tag_Id'];
$day_value = $row['Tag_Wert'];
$week_id = $row['Wochen_Id'];
$week_value = $row['Wochen_Wert'];
$month_id = $row['Monat_Id'];
$month_value = $row['Monat_Wert'];
$year_id = $row['Jahr_Id'];
$year_value = $row['Jahr_Wert'];
$all_value = $row['Gesamt_Wert'];
$record_date = $row['Rekord_Datum'];
$record_value = $row['Rekord_Wert'];

$counter_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? addslashes(trim($_SERVER['HTTP_USER_AGENT'])) : "";
$counter_time  = stime();
$counter_ip    = trim(addslashes($_SERVER['REMOTE_ADDR'])); 

//=================================================================
// Bots ausschliessen
//=================================================================
if (substr_count($counter_agent, "bot") > 0) $ignore = true;

//=================================================================
// IP's loeschen
//=================================================================
if ($ignore == false)
{
	$GLOBALS['db']->Query("DELETE FROM "  . PREFIX . "_counter_ips where unix_timestamp(NOW())-unix_timestamp(visit) > $counter_ablauf"); 
}

//=================================================================
// Ist IP schon eingetragen?
//=================================================================
if ($ignore == false)
{
	$res = $GLOBALS['db']->RowQuery("SELECT * FROM "  . PREFIX . "_counter_ips where ip = '$counter_ip'");
 
	if (!is_object($res))
	{
	 	$GLOBALS['db']->RowQuery("INSERT INTO "  . PREFIX . "_counter_ips (ip, visit) VALUES ('$counter_ip', NOW())");
	
	} else {
		$ignore = true;
		$GLOBALS['db']->RowQuery("UPDATE "  . PREFIX . "_counter_ips set visit = NOW() where ip = '$counter_ip'");
	}
}

//=================================================================
// Online?
//=================================================================
$res = $GLOBALS['db']->Query("SELECT * FROM "  . PREFIX . "_counter_ips");
$online = $res->NumRows();

//=================================================================
// Counter
//=================================================================
if ($ignore == false)
{
	// Tag
	if ($Tag_Id == date("z")) 
	{
		$day_value++; 
	} else  {
		$day_value = 1;
		$Tag_Id = date("z");
	}
  
	// Woche
	if ($week_id == date("W")) 
	{
		$week_value++; 
	} else { 
		$week_value = 1;
		$week_id = date("W");
	}
  
	// Monat
	if ($month_id == date("n")) 
	{
		$month_value++; 
	} else {
		$month_value = 1;
		$month_id = date("n");
	}
  
	// Jahr
	if ($year_id == date("Y")) 
	{
		$year_value++; 
	} else {
		$year_value = 1;
		$year_id = date("Y");
	}
  
	// Gesamt
	$all_value++;
	
	// Neuer Rekord?
	if ($day_value > $record_value)
	{
		$record_value = $day_value;
		$record_date = date("Y-m-d H:i:s");
	}
		 
	// Aktualisieren
	$sql = "UPDATE "  . PREFIX . "_counter_werte SET 
		Tag_Id = '$Tag_Id', 
		Tag_Wert = '$day_value', 
		Wochen_Id = '$week_id', 
		Wochen_Wert = '$week_value', 
		Monat_Id = '$month_id', 
		Monat_Wert = '$month_value', 
		Jahr_Id = '$year_id', 
		Jahr_Wert = '$year_value', 
		Gesamt_Wert = '$all_value', 
		Rekord_Datum = '$record_date', 
		Rekord_Wert = '$record_value' 
		WHERE 
			Tag_Id = '" .  $did  . "' AND 
			Jahr = '" . date('Y') . "'";
	$GLOBALS['db']->Query($sql);
	
	include_once(BASE_DIR . '/class/Class.OsCounter.php');
	$clientInfo = new Browser;
	
	$referer = @preg_replace('/([^-A-Za-zÀ-ÖØ-öø-ÿ0-9,_.:\/&=?]*)/', '', $_SERVER['HTTP_REFERER']);
	
	$GLOBALS['db']->Query("INSERT INTO " . PREFIX . "_counter_referer 
	(
		Id,
		Os,
		IPAdresse,
		Ua,
		Referer,
		Details,
		Datum,
		Datum_Int 
	) VALUES (
		'', 
		'" . $clientInfo->Platform . "', 
		'" . $_SERVER['REMOTE_ADDR'] . "',
		'" . $clientInfo->Name . " " . $clientInfo->Version . "', 
		'{$referer}', 
		'" . @$_SERVER['HTTP_USER_AGENT'] . "',
		NOW(),
		'" . stime() . "'
	)");
}
?>