- LogOperator 1.3 created by 19colors -
"Everything is possible"
endif ?>
if (isset($batch_log) && $batch_log>0) return;
################################################
function get_log_list($log_dir, $sizes=false)
{
$list= array();
$dir= dir($log_dir);
while($entry=$dir->read())
{
if (substr($entry,-4)=='.log')
{
$item= substr($entry,0,strlen($entry)-4);
if ($sizes) $item.= ' ('.(int)(filesize($log_dir.'/'.$entry)/1024).'K)';
$list[]= $item;
}
}
$dir->close();
if (count($list)==0) $list[]="-no logs in this directory-";
else sort($list);
return $list;
}
################################################
function write_array($fp, $name, &$list)
{
for ($i=0; $i14400) {$list[$ip][_ip_visits]++; $unique=TRUE;}
$list[$ip][_ip_last]= $time;
}
return $unique;
}
################################################
function add_ref(&$list,$item,$time)
{
global $domain;
if (substr($item,0,strlen($domain))==$domain) return; //self referrence
if (substr($item,0,4+strlen($domain))=='www.'.$domain) return; //self referrence
add_generic($list,$item,$time);
}
################################################
function add_hit(&$list,$item,$time,$hit=0,$visit=0,$page=0)
{
global $total, $time_now;
if (!isset($list[$item])) $list[$item]= array(0,0,0,0);
$time_passed= $time_now-$time;
$list[$item][3]++; $total['Requests'][3]+=$hit; $total['Pages'][3]+=$page; $total['Visits'][3]+=$visit;
if ($time_passed<2592000) {$list[$item][2]++; $total['Requests'][2]+=$hit; $total['Pages'][2]+=$page; $total['Visits'][2]+=$visit;} //month
if ($time_passed<604800) {$list[$item][1]++; $total['Requests'][1]+=$hit; $total['Pages'][1]+=$page; $total['Visits'][1]+=$visit;} //week
if ($time_passed<86400) {$list[$item][0]++; $total['Requests'][0]+=$hit; $total['Pages'][0]+=$page; $total['Visits'][0]+=$visit;} //day
if ($hit|$visit)
{
global $last_week;
if ($time<_midnight-7*_24h);
elseif ($time<_midnight-6*_24h) {$last_week[_midnight-6*_24h]['Requests']+=$hit; $last_week[_midnight-6*_24h]['Pages']+=$page; $last_week[_midnight-6*_24h]['Visits']+=$visit;}
elseif ($time<_midnight-5*_24h) {$last_week[_midnight-5*_24h]['Requests']+=$hit; $last_week[_midnight-5*_24h]['Pages']+=$page; $last_week[_midnight-5*_24h]['Visits']+=$visit;}
elseif ($time<_midnight-4*_24h) {$last_week[_midnight-4*_24h]['Requests']+=$hit; $last_week[_midnight-4*_24h]['Pages']+=$page; $last_week[_midnight-4*_24h]['Visits']+=$visit;}
elseif ($time<_midnight-3*_24h) {$last_week[_midnight-3*_24h]['Requests']+=$hit; $last_week[_midnight-3*_24h]['Pages']+=$page; $last_week[_midnight-3*_24h]['Visits']+=$visit;}
elseif ($time<_midnight-2*_24h) {$last_week[_midnight-2*_24h]['Requests']+=$hit; $last_week[_midnight-2*_24h]['Pages']+=$page; $last_week[_midnight-2*_24h]['Visits']+=$visit;}
elseif ($time<_midnight-1*_24h) {$last_week[_midnight-1*_24h]['Requests']+=$hit; $last_week[_midnight-1*_24h]['Pages']+=$page; $last_week[_midnight-1*_24h]['Visits']+=$visit;}
elseif ($time<_midnight ) {$last_week[_midnight ]['Requests']+=$hit; $last_week[_midnight ]['Pages']+=$page; $last_week[_midnight ]['Visits']+=$visit;}
}
}
################################################
function add_brs(&$list,$item,$time,$brief,$ver)
{
if ($brief && $ver)
{
$res='';
if (ereg('(MSIE|Opera) ([0-9.]+)',$item,$res)) $item= $res[0];
elseif (ereg('(Mozilla)/([0-9.]+)',$item,$res)) $item= 'Netscape '.$res[2];
}
elseif ($brief)
{
$res='';
if (ereg('(MSIE|Opera) ([0-9.]+)',$item,$res)) $item= $res[1];
elseif (ereg('(Mozilla)/([0-9.]+)',$item,$res)) $item= 'Netscape';
else $item= 'Others';
}
add_generic($list,$item,$time);
}
################################################
function add_generic(&$list,$item,$time)
{
global $time_now;
$time_passed= $time_now-$time;
if (!isset($list[$item])) $list[$item]= array(0,0,0,0);
$list[$item][3]++;
if ($time_passed<2592000) {$list[$item][2]++;} //month
if ($time_passed<604800) {$list[$item][1]++;} //week
if ($time_passed<86400) {$list[$item][0]++;} //day
}
################################################
function cmp_1($a,$b) {return ($a[1]>$b[1])?-1:1;}
function clear_time(&$val) {$val[0]=0;}
################################################
function max_week(&$val,$key,&$max)
{
if ($val[_hits]>$max) $max= $val[_hits];
if ($val['Visits']==0 and $val[_hits]!=0) $val['Visits']=1;
}
################################################
function sum_generic($val)
{
global $list_sum;
$list_sum[0]+= $val[0];
$list_sum[1]+= $val[1];
$list_sum[2]+= $val[2];
$list_sum[3]+= $val[3];
}
################################################
function sum_visits($val)
{
global $list_sum;
if (!isset($list_sum[$val[_ip_visits]])) $list_sum[$val[_ip_visits]]=0;
$list_sum[$val[_ip_visits]]++;
}
################################################
function log_to_time($time)
{
$time[2]=' ';
$time[6]=' ';
$time[11]=' ';
return strtotime($time);
}
################################################
function report_total($name,&$total)
{
global $time_begin_log;
$total[_hits.' per visit'][0]= round($total[_hits][0]/($total['Visits'][0]?$total['Visits'][0]:1),1);
$total[_hits.' per visit'][1]= round($total[_hits][1]/($total['Visits'][1]?$total['Visits'][1]:1),1);
$total[_hits.' per visit'][2]= round($total[_hits][2]/($total['Visits'][2]?$total['Visits'][2]:1),1);
$total[_hits.' per visit'][3]= round($total[_hits][3]/($total['Visits'][3]?$total['Visits'][3]:1),1);
table_begin($name,' |Last 24 Hours|Last 7 Days|Last 30 Days|From '.date('d F Y',$time_begin_log));
reset($total);
while (list($key,$val)=each($total))
{
if (_hits=='Pages' && $key=='Requests') continue;
table_line($key,$val);
}
table_end();
}
################################################
function report_week($name,&$week)
{
table_begin($name,'Day|'._hits.'|Visits|'.str_pad('Graph',2*6*20+5," ",STR_PAD_BOTH));
$max=0;
reset($week);
array_walk($week,'max_week',&$max);
$max= round($max*1.1);
reset($week);
while (list($key,$val)=each($week))
{
$key= date('D, d F',$key-1);
unset($val[_hits_off]);
$val[]= create_graph_bar($val[_hits],$max);
table_line($key,$val);
}
table_end();
}
################################################
function report_generic($name,&$list,$quantity=0)
{
global $list_sum;
global $time_begin_log;
if ($quantity>=0) /*otherwise already sorted*/ arsort($list); // asort compares only first elements in subarrays
$list_sum= array(0,0,0,0);
array_walk($list,'sum_generic');
table_begin($name,' |Last 24 Hours|Last 7 Days|Last 30 Days|From '.date('d F Y',$time_begin_log).'|%%');
if ($quantity>=0) reset($list);
else {end($list); for ($i=$quantity+1; $i!=0; $i++) prev($list);}
while (list($key,$val)=each($list))
{
$val[]=sprintf('%3.1f',round($val[3]/$list_sum[3]*100,1));
table_line($key,$val);
$quantity--; if ($quantity==0) break;
}
table_end();
}
################################################
function report_visits($name,&$list)
{
global $list_sum;
$list_sum= array();
array_walk($list,'sum_visits');
krsort($list_sum);
table_begin($name,'Number of Visits|Number of Visitors');
reset($list_sum);
while (list($key,$val)=each($list_sum))
{
$val=array($val);
table_line($key,$val);
}
table_end();
}
################################################
function report_topvisits($name,&$list)
{
global $rep_topvis;
array_walk($list,'clear_time');
arsort($list,'cmp_1'); // asort compares only first elements in subarrays
table_begin($name,'Address|Number of Visits');
reset($list); $i=0;
while (list($key,$val)=each($list) and $i++<$rep_topvis)
{
$val= array($val[_ip_visits]);
table_line($key,$val);
}
table_end();
}
################################################
function create_graph_bar($this,$max)
{
static $color=array('#FF0000','#FFFF00','#00FF00','#00FFFF','#0000FF','#FF00FF','#FFFFFF');
$code='';
if ($this!=0)
{
$code.= '';
} else $code.= ' ';
array_shift($color);
return $code;
}
################################################
function table_begin($name,$head)
{
echo ''.$name.'
';
echo '';
echo '';
echo '| '.str_replace('|',' | ',$head).' | ';
echo '
';
}
################################################
function table_end()
{
echo '
';
}
################################################
function table_line($item,&$data)
{
echo '';
echo '| '.$item.' | ';
reset($data);
while (list($key,$val)=each($data))
{
echo ''.$val.' | ';
}
echo '
';
}
?>