--- awstats.pl.orig 2010-10-16 19:24:03.000000000 +0200 +++ awstats.pl 2011-01-30 12:31:53.000000000 +0100 @@ -34,7 +34,7 @@ $LIMITFLUSH $NEWDAYVISITTIMEOUT $VISITTIMEOUT $NOTSORTEDRECORDTOLERANCE $WIDTHCOLICON $TOOLTIPON $lastyearbeforeupdate $lastmonthbeforeupdate $lastdaybeforeupdate $lasthourbeforeupdate $lastdatebeforeupdate - $NOHTML + $NOHTML $MultipleMonthPatch $MultipleMonthScript /; $DEBUGFORCED = 0 ; # Force debug level to log lesser level into debug.log file (Keep this value to 0) @@ -53,6 +53,8 @@ $WIDTHCOLICON = 32; $TOOLTIPON = 0; # Tooltips plugin loaded $NOHTML = 0; # Suppress the html headers +$MultipleMonthPatch = 1; # Enable/Disable the "Reported period" drop down box on the generated static pages +$MultipleMonthScript = 1; # Enable/Disable generation of external JavaScript file # ----- Running variables ----- use vars qw/ @@ -488,7 +490,7 @@ %ValidHTTPCodes %ValidSMTPCodes %TrapInfosForHTTPErrorCodes %NotPageList %DayBytes %DayHits %DayPages %DayVisits %MaxNbOf %MinHit - %ListOfYears %HistoryAlreadyFlushed %PosInFile %ValueInFile + %ListOfYears %ListOfMonths %HistoryAlreadyFlushed %PosInFile %ValueInFile %val %nextval %egal %TmpDNSLookup %TmpOS %TmpRefererServer %TmpRobot %TmpBrowser %MyDNSTable /; @@ -501,7 +503,7 @@ %NotPageList = (); %DayBytes = %DayHits = %DayPages = %DayVisits = (); %MaxNbOf = %MinHit = (); -%ListOfYears = %HistoryAlreadyFlushed = %PosInFile = %ValueInFile = (); +%ListOfYears = %ListOfMonths = %HistoryAlreadyFlushed = %PosInFile = %ValueInFile = (); %val = %nextval = %egal = (); %TmpDNSLookup = %TmpOS = %TmpRefererServer = %TmpRobot = %TmpBrowser = (); %MyDNSTable = (); @@ -6150,6 +6152,13 @@ if ( !$ListOfYears{"$year"} || $ListOfYears{"$year"} lt "$month" ) { $ListOfYears{"$year"} = "$month"; } + + if ( !$ListOfMonths{"$year"} ) { + $ListOfMonths{"$year"} = (); + } + if ( !$ListOfMonths{"$year"}{"$month"} ) { + $ListOfMonths{"$year"}{"$month"} = 1; + } } # For backward compatibility, if LastLine does not exist, set to LastTime @@ -9370,7 +9379,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=$key") - : "$StaticLinks.$key.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.$key-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.$key.$StaticExt" ) ) . "\"$NewLinkTarget>$menutext->{$key}\n"; print( $frame? "\n" : " " ); @@ -9417,7 +9426,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=allemails") - : "$StaticLinks.allemails.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.allemails-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.allemails.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; if ( $ShowEMailSenders =~ /L/i ) { @@ -9426,7 +9435,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=lastemails") - : "$StaticLinks.lastemails.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.lastemails-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.lastemails.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[9]"; } @@ -9584,7 +9593,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=allemailr") - : "$StaticLinks.allemailr.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.allemailr-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.allemailr.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; if ( $ShowEMailReceivers =~ /L/i ) { @@ -9593,7 +9602,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=lastemailr") - : "$StaticLinks.lastemailr.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.lastemailr-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.lastemailr.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[9]"; } @@ -9745,9 +9754,72 @@ if ( $FrameName eq 'mainright' ) { $NewLinkTarget = " target=\"_parent\""; } + + if ($MultipleMonthPatch) { + if ($MultipleMonthScript) { + print "\n\n"; + print "\n +EOF + } + print "