<?php
// mod by Golem http://veplog.ru
//------------------------- Функция подсчета посетителей -----------------------//
$sitetime=time()+($config_timeclocks*3600);
$maxonline="250"; #сколько онлайн записей хранить
$file_online=file(BASEDIR."local/online.dat");
$ion = count($file_online);
if ($ion>=$maxonline) {
$fpon=fopen(BASEDIR."local/online.dat","w");
if($fpon){
flock ($fpon,LOCK_EX);
unset($file_online[0],$file_online[1]);
fputs($fpon, implode("",$file_online));
flock ($fpon,LOCK_UN);
fclose($fpon);}}
$oftime=$sitetime-600;
$den=date("d",$sitetime);
$hour=date("H",$sitetime);
$found = 0;
$user = "";
$arrtimehour=mktime(date("H",$sitetime), 0, 0, date("m",$sitetime), date("d",$sitetime), date("Y",$sitetime));
$arrtimeday=mktime(0, 0, 0, date("m",$sitetime), date("d",$sitetime), date("Y",$sitetime));
$f = fopen(BASEDIR."local/online.dat","r+");
if($f){
flock($f,LOCK_EX);
while (!feof($f))
{
$user[] = fgets($f,65536);
}
fseek($f,0,SEEK_SET);
ftruncate($f,0);
foreach($user as $val) {
$savesdata = explode("#",$val);
if(isset($savesdata[1]) && $ip==$savesdata[1]){$found = 1;}
if(isset($savesdata[2]) && $savesdata[2]==$log && $savesdata[2]!=""){$savesdata[1]=$ip;}
if($savesdata[0]>$oftime && $ip!=$savesdata[1] && $savesdata[1]!=""){
fputs($f,$savesdata[0]."#".$savesdata[1]."#".$savesdata[2]."#".$savesdata[3]."#\r\n");
}
}
fputs($f,$sitetime."#".$ip."#".$log."#".$brow."#\r\n");
fflush($f);
flock($f,LOCK_UN);
fclose ($f);
}
//--------------------------------------------------------------------//
// Запись хостов
//--------------------------------------------------------------------//
if($found==0){
$fp=fopen(BASEDIR."local/datacounter/host.dat","a+");
if($fp){
flock($fp,LOCK_EX);
while (!feof($fp))
{
$arcounts[] = fgets($fp,100);
}
$count=explode("#",$arcounts[0]);
//----------------------- Статистика по 24 часам (хосты) ---------------------------------//
if($count[3]!=$hour){
$ufilecount = file(BASEDIR."local/datacounter/24_host.dat");
$udatacount = explode("|",$ufilecount[0]);
if($udatacount[0]!=""){
for($f=0;$f<24;$f++){
$udatadays = explode("-",$udatacount[0]);
$newtime=$udatadays[0]+7200;
$newzaptime=$udatadays[0]+3600;
if($sitetime>$newtime){
array_unshift($udatacount,$newzaptime.'-0');
}}}
array_unshift($udatacount,$arrtimehour.'-'.$count[4]);
for ($uc=0; $uc<24; $uc++){
$utextcount.=$udatacount[$uc].'|';}
if($utextcount!=""){
$fpcount=fopen(BASEDIR."local/datacounter/24_host.dat","a+");
flock($fpcount,LOCK_EX);
ftruncate($fpcount,0);
fputs($fpcount,$utextcount);
fflush($fpcount);
flock($fpcount,LOCK_UN);
fclose($fpcount);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/24_host.dat", 0666);
}
$count[3]=$hour; $count[4]=0;
}
if($count[0]!=$den){
//------------------------ Статистика по 31 дню (хосты) --------------------------------//
$cufilecount = file(BASEDIR."local/datacounter/31_host.dat");
$cudatacount = explode("|",$cufilecount[0]);
if($cudatacount[0]!=""){
for($f=0;$f<31;$f++){
$cudatadays = explode("-",$cudatacount[0]);
$cnewtime=$cudatadays[0]+172800;
$cnewzaptime=$cudatadays[0]+86400;
if($sitetime>$cnewtime){
array_unshift($cudatacount,$cnewzaptime.'-0');
}}}
array_unshift($cudatacount,$arrtimeday.'-'.$count[1]);
for ($cuc=0; $cuc<31; $cuc++){
$cutextcount.=$cudatacount[$cuc].'|';}
if($cutextcount!=""){
$cfpcount=fopen(BASEDIR."local/datacounter/31_host.dat","a+");
flock($cfpcount,LOCK_EX);
ftruncate($cfpcount,0);
fputs($cfpcount,$cutextcount);
fflush($cfpcount);
flock($cfpcount,LOCK_UN);
fclose($cfpcount);
@chmod ($cfpcount, 0666);
@chmod (BASEDIR."local/datacounter/31_host.dat", 0666);
}
$count[0]=$den; $count[1]=0;
}
//------------------------ Каждое посещение --------------------------------//
$count[1]++; $count[2]++; $count[4]++;
$zapis=$count[0].'#'.$count[1].'#'.$count[2].'#'.$count[3].'#'.$count[4].'#';
ftruncate($fp,0);
fputs($fp,$zapis);
fflush($fp);
flock($fp,LOCK_UN);
fclose($fp);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/host.dat", 0666);
}}else{
//--------------------------------------------------------------------//
// Запись хитов
//--------------------------------------------------------------------//
$fp=fopen(BASEDIR."local/datacounter/hits.dat","a+");
if($fp){
flock($fp,LOCK_EX);
while (!feof($fp))
{
$arcounts[] = fgets($fp,100);
}
$count=explode("#",$arcounts[0]);
//----------------------- Статистика по 24 часам (хиты) ---------------------------------//
if($count[3]!=$hour){
$ufilecount = file(BASEDIR."local/datacounter/24_hits.dat");
$udatacount = explode("|",$ufilecount[0]);
if($udatacount[0]!=""){
for($f=0;$f<24;$f++){
$udatadays = explode("-",$udatacount[0]);
$newtime=$udatadays[0]+7200;
$newzaptime=$udatadays[0]+3600;
if($sitetime>$newtime){
array_unshift($udatacount,$newzaptime.'-0');
}}}
array_unshift($udatacount,$arrtimehour.'-'.$count[4]);
for ($uc=0; $uc<24; $uc++){
$utextcount.=$udatacount[$uc].'|';}
if($utextcount!=""){
$fpcount=fopen(BASEDIR."local/datacounter/24_hits.dat","a+");
flock($fpcount,LOCK_EX);
ftruncate($fpcount,0);
fputs($fpcount,$utextcount);
fflush($fpcount);
flock($fpcount,LOCK_UN);
fclose($fpcount);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/24_hits.dat", 0666);
}
$count[3]=$hour; $count[4]=0;
}
if($count[0]!=$den){
//------------------------ Статистика по 31 дню (хиты) --------------------------------//
$cufilecount = file(BASEDIR."local/datacounter/31_hits.dat");
$cudatacount = explode("|",$cufilecount[0]);
if($cudatacount[0]!=""){
for($f=0;$f<31;$f++){
$cudatadays = explode("-",$cudatacount[0]);
$cnewtime=$cudatadays[0]+172800;
$cnewzaptime=$cudatadays[0]+86400;
if($sitetime>$cnewtime){
array_unshift($cudatacount,$cnewzaptime.'-0');
}}}
array_unshift($cudatacount,$arrtimeday.'-'.$count[1]);
for ($cuc=0; $cuc<31; $cuc++){
$cutextcount.=$cudatacount[$cuc].'|';}
if($cutextcount!=""){
$cfpcount=fopen(BASEDIR."local/datacounter/31_hits.dat","a+");
flock($cfpcount,LOCK_EX);
ftruncate($cfpcount,0);
fputs($cfpcount,$cutextcount);
fflush($cfpcount);
flock($cfpcount,LOCK_UN);
fclose($cfpcount);
@chmod ($cfpcount, 0666);
@chmod (BASEDIR."local/datacounter/31_hits.dat", 0666);
}
$count[0]=$den; $count[1]=0;
}
//----------------------- Каждое посещение ----------------------------//
$count[1]++; $count[2]++; $count[4]++;
$zapis=$count[0].'#'.$count[1].'#'.$count[2].'#'.$count[3].'#'.$count[4].'#';
ftruncate($fp,0);
fputs($fp,$zapis);
fflush($fp);
flock($fp,LOCK_UN);
fclose($fp);
@chmod ($fpcount, 0666);
@chmod (BASEDIR."local/datacounter/hits.dat", 0666);
}
}
//-------------------- Вывод статистики ------------------------------//
$str = file_get_contents(BASEDIR."local/online.dat");
$substr_count = substr_count($str,"##");
$lines=file(BASEDIR."local/online.dat");
$counter_online=count($lines);
$counter_reg=$counter_online-$substr_count;
$count=file(BASEDIR."local/datacounter/host.dat");
$count =explode("#",$count[0]);
$counter_host=$count[1];
$counter_all=$count[2];
$hcount=file(BASEDIR."local/datacounter/hits.dat");
$hcount =explode("#",$hcount[0]);
$counter_hits=$hcount[1];
$counter_allhits=$hcount[2];
echo' [<a href="'.BASEDIR.'pages/onlinewho.php?">'.$counter_online.'</a>]<br>';
if($config_counters=="1"){
if($config_incount=="1"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_host.' | '.$counter_all.'</a><br>';}
if($config_incount=="2"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_hits.' | '.$counter_allhits.'</a><br>';}
if($config_incount=="3"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_host.' | '.$counter_hits.'</a><br>';}
if($config_incount=="4"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'">'.$counter_all.' | '.$counter_allhits.'</a><br>';}
if($config_incount=="5"){ echo '<a href="'.BASEDIR.'pages/counter.php?'.SID.'"><img src="'.BASEDIR.'gallery/count.php" alt=""></a><br>';}
}
?>