From: eldy <> Date: Sat, 20 Oct 2001 18:27:37 +0000 (+0000) Subject: New feature: Add average values for daily stats. X-Git-Tag: AWSTATS_1_0~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e46e727472af2110c24b5207fabb100a282829f7;p=thirdparty%2FAWStats.git New feature: Add average values for daily stats. --- diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 1140a832..3e98dd88 100644 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -358,6 +358,7 @@ sub DayOfWeek { sub DateIsValid { my ($day, $month, $year) = @_; + if ($day < 1) { return 0; } if ($month==1 || $month==3 || $month==5 || $month==7 || $month==8 || $month==10 || $month==12) { if ($day > 31) { return 0; } } @@ -805,6 +806,9 @@ sub Check_Config { if ($Message[92] eq "") { $Message[92]="Who"; } if ($Message[93] eq "") { $Message[93]="When"; } if ($Message[94] eq "") { $Message[94]="Authenticated users"; } + if ($Message[95] eq "") { $Message[95]="Min"; } + if ($Message[96] eq "") { $Message[96]="Average"; } + if ($Message[97] eq "") { $Message[97]="Max"; } } #-------------------------------------------------------------------- @@ -2512,52 +2516,94 @@ EOF print ""; print ""; $max_p=$max_h=$max_k=$max_v=1; - my $lastdaytoshowtime=$nowtime; # Set day cursor to today - if (! (($MonthRequired eq $nowmonth || $MonthRequired eq "year") && $YearRequired eq $nowyear)) { + my $lastdaytoshowtime=$nowyear.$nowmonth.$nowday; # Set day cursor to today + if (($MonthRequired ne $nowmonth && $MonthRequired ne "year") || $YearRequired ne $nowyear) { if ($MonthRequired eq "year") { - # About 365.24 days a year = 31556736 seconds a year - $lastdaytoshowtime=($YearRequired-1970+1)*31556736-43200; # Set day cursor to last day of the year + $lastdaytoshowtime=$YearRequired."3112"; # Set day cursor to last day of the required year } else { - # About 30.43 days a month = 2626728 seconds a month - $lastdaytoshowtime=($YearRequired-1970)*31556736+$MonthRequired*2629728; - } - } - for (my $ix=$MaxNbOfDays-1; $ix>=0; $ix--) { - my ($oldsec,$oldmin,$oldhour,$oldday,$oldmonth,$oldyear) = localtime($lastdaytoshowtime-($ix*86400)); - if ($oldyear < 100) { $oldyear+=2000; } else { $oldyear+=1900; } - if (++$oldmonth < 10) { $oldmonth="0$oldmonth"; } - if ($oldday < 10) { $oldday="0$oldday"; } - if ($DayPages{$oldyear.$oldmonth.$oldday} > $max_p) { $max_p=$DayPages{$oldyear.$oldmonth.$oldday}; } - if ($DayHits{$oldyear.$oldmonth.$oldday} > $max_h) { $max_h=$DayHits{$oldyear.$oldmonth.$oldday}; } - if ($DayBytes{$oldyear.$oldmonth.$oldday} > $max_k) { $max_k=$DayBytes{$oldyear.$oldmonth.$oldday}; } - } - for (my $ix=$MaxNbOfDays-1; $ix>=0; $ix--) { - my ($oldsec,$oldmin,$oldhour,$oldday,$oldmonth,$oldyear) = localtime($lastdaytoshowtime-($ix*86400)); - if ($oldyear < 100) { $oldyear+=2000; } else { $oldyear+=1900; } - if (++$oldmonth < 10) { $oldmonth="0$oldmonth"; } - if ($oldday < 10) { $oldday="0$oldday"; } + $lastdaytoshowtime=$YearRequired.$MonthRequired."31"; # Set ay cursor to last day of the required month + } + } + my $firstdaytoshowtime=$lastdaytoshowtime; + # Get max_p, max_h and max_k values + my $nbofdaysshown=0; + for (my $daycursor=$lastdaytoshowtime; $nbofdaysshown<$MaxNbOfDays; $daycursor--) { + $daycursor =~ /^(\d\d\d\d)/; my $year=$1; + $daycursor =~ /^\d\d\d\d(\d\d)/; my $month=$1; + $daycursor =~ /^\d\d\d\d\d\d(\d\d)/; my $day=$1; + if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next + $nbofdaysshown++; + $firstdaytoshowtime=$year.$month.$day; + if ($DayPages{$year.$month.$day} > $max_p) { $max_p=$DayPages{$year.$month.$day}; } + if ($DayHits{$year.$month.$day} > $max_h) { $max_h=$DayHits{$year.$month.$day}; } + if ($DayBytes{$year.$month.$day} > $max_k) { $max_k=$DayBytes{$year.$month.$day}; } + } + $nbofdaysshown=0; + for (my $daycursor=$firstdaytoshowtime; $nbofdaysshown<$MaxNbOfDays; $daycursor++) { + $daycursor =~ /^(\d\d\d\d)/; my $year=$1; + $daycursor =~ /^\d\d\d\d(\d\d)/; my $month=$1; + $daycursor =~ /^\d\d\d\d\d\d(\d\d)/; my $day=$1; + if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next + $nbofdaysshown++; my $bredde_p=0;my $bredde_h=0;my $bredde_k=0; - if ($max_h > 0) { $bredde_p=int($DayPages{$oldyear.$oldmonth.$oldday}/$max_h*$BarHeight/2)+1; } - if ($max_h > 0) { $bredde_h=int($DayHits{$oldyear.$oldmonth.$oldday}/$max_h*$BarHeight/2)+1; } - if ($max_k > 0) { $bredde_k=int($DayBytes{$oldyear.$oldmonth.$oldday}/$max_k*$BarHeight/2)+1; } + if ($max_h > 0) { $bredde_p=int($DayPages{$year.$month.$day}/$max_h*$BarHeight/2)+1; } + if ($max_h > 0) { $bredde_h=int($DayHits{$year.$month.$day}/$max_h*$BarHeight/2)+1; } + if ($max_k > 0) { $bredde_k=int($DayBytes{$year.$month.$day}/$max_k*$BarHeight/2)+1; } print "\n"; } + print ""; + # Calculate average values + my $avg_day_nb=0; my $avg_day_p=0; my $avg_day_h=0; my $avg_day_k=0; + my $FirstTimeDay=$FirstTime; + my $LastTimeDay=$LastTime; + $FirstTimeDay =~ /^(\d\d\d\d\d\d\d\d).*/; $FirstTimeDay=$1; + $LastTimeDay =~ /^(\d\d\d\d\d\d\d\d).*/; $LastTimeDay=$1; + foreach my $daycursor ($FirstTimeDay..$LastTimeDay) { + $daycursor =~ /^(\d\d\d\d)/; my $year=$1; + $daycursor =~ /^\d\d\d\d(\d\d)/; my $month=$1; + $daycursor =~ /^\d\d\d\d\d\d(\d\d)/; my $day=$1; + if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next + $avg_day_nb++; # Increase number of day used to count + $avg_day_p+=$DayPages{$daycursor}; + $avg_day_h+=$DayHits{$daycursor}; + $avg_day_k+=$DayBytes{$daycursor}; + } + if ($avg_day_nb) { + $avg_day_p=sprintf("%.2f",$avg_day_p/$avg_day_nb); + $avg_day_h=sprintf("%.2f",$avg_day_h/$avg_day_nb); + $avg_day_k=sprintf("%.2f",$avg_day_k/$avg_day_nb); + } + # Show average values + print "\n"; + print ""; - for (my $ix=$MaxNbOfDays-1; $ix>=0; $ix--) { - my ($oldsec,$oldmin,$oldhour,$oldday,$oldmonth,$oldyear,$oldwday) = localtime($lastdaytoshowtime-($ix*86400)); - if ($oldyear < 100) { $oldyear+=2000; } else { $oldyear+=1900; } - if (++$oldmonth < 10) { $oldmonth="0$oldmonth"; } - if ($oldday < 10) { $oldday="0$oldday"; } - print "":""); - } + $nbofdaysshown=0; + for (my $daycursor=$firstdaytoshowtime; $nbofdaysshown<$MaxNbOfDays; $daycursor++) { + $daycursor =~ /^(\d\d\d\d)/; my $year=$1; + $daycursor =~ /^\d\d\d\d(\d\d)/; my $month=$1; + $daycursor =~ /^\d\d\d\d\d\d(\d\d)/; my $day=$1; + if (! DateIsValid($day,$month,$year)) { next; } # If not an existing day, go to next + $nbofdaysshown++; + print "":""); + } + print ""; + print ""; print "
"; - print "\"$Message[56]:"; - print "\"$Message[57]:"; - print "\"$Message[75]:"; + print "\"$Message[56]:"; + print "\"$Message[57]:"; + print "\"$Message[75]:"; print "   "; + my $bredde_p=0;my $bredde_h=0;my $bredde_k=0; + if ($max_h > 0) { $bredde_p=int($avg_day_p/$max_h*$BarHeight/2)+1; } + if ($max_h > 0) { $bredde_h=int($avg_day_h/$max_h*$BarHeight/2)+1; } + if ($max_k > 0) { $bredde_k=int($avg_day_k/$max_k*$BarHeight/2)+1; } + print "\"$Message[56]:"; + print "\"$Message[57]:"; + print "\"$Message[75]:"; + print "
"; - print ($oldday==$nowday && $oldmonth==$nowmonth?"":""); - print "$oldday
".$monthlib{$oldmonth}.""; - print ($oldday==$nowday && $oldmonth==$nowmonth?"
"; + print ($day==$nowday && $month==$nowmonth?"":""); + print "$day
".$monthlib{$month}.""; + print ($day==$nowday && $month==$nowmonth?"
  $Message[96]

"; print ""; @@ -2591,9 +2637,9 @@ EOF } for (0..6) { if ($avg_dayofweek[$_]) { - $avg_dayofweek_p[$_]/=$avg_dayofweek[$_]; - $avg_dayofweek_h[$_]/=$avg_dayofweek[$_]; - $avg_dayofweek_k[$_]/=$avg_dayofweek[$_]; + $avg_dayofweek_p[$_]=sprintf("%.2f",$avg_dayofweek_p[$_]/$avg_dayofweek[$_]); + $avg_dayofweek_h[$_]=sprintf("%.2f",$avg_dayofweek_h[$_]/$avg_dayofweek[$_]); + $avg_dayofweek_k[$_]=sprintf("%.2f",$avg_dayofweek_k[$_]/$avg_dayofweek[$_]); } $max_p = $avg_dayofweek_p[$_] if ($avg_dayofweek_p[$_] > $max_p); $max_h = $avg_dayofweek_h[$_] if ($avg_dayofweek_h[$_] > $max_h);