--- 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 "
\n"; + . ( ($MultipleMonthPatch) ? "\" onSubmit=\"return onSubmitForm();\" " : "\" " ) + . "style=\"padding: 0px 0px 0px 0px; margin-top: 0\"$NewLinkTarget>\n"; } if ( $QueryString !~ /buildpdf/i ) { @@ -9867,9 +9939,9 @@ print "$Message[133]:"; print ""; - if ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ) { - print "\n", ($MultipleMonthPatch) ? " onfocus=\"javascript:updateSelectedMonth();\"" : ""; + foreach ( sort keys %{$ListOfMonths{$YearRequired}} ) { my $monthix = sprintf( "%02s", $_ ); print "- $Message[6] -\n"; } print "\n"; - print "\n", ($MultipleMonthPatch) ? " onfocus=\"javascript:updateSelectedYear();\"" : ""; # Add YearRequired in list if not in ListOfYears $ListOfYears{$YearRequired} ||= $MonthRequired; @@ -9895,14 +9967,16 @@ . " value=\"$_\">$_\n"; } print "\n"; - print "\n"; - if ($SiteConfig) { + if (!$MultipleMonthPatch) { + print "\n"; + } + if (!$MultipleMonthPatch && $SiteConfig) { print "\n"; } - if ($DirConfig) { + if (!$MultipleMonthPatch && $DirConfig) { print "\n"; } @@ -10148,7 +10222,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=downloads") - : "$StaticLinks.downloads.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.downloads-$YearRequired-$MonthRequired.$StaticExt" :"$StaticLinks.downloads.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]\n"; print( $frame? "\n" : "   " ); @@ -10169,7 +10243,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=urldetail") - : "$StaticLinks.urldetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urldetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urldetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]\n"; print( $frame? "\n" : "   " ); @@ -10184,7 +10258,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=urlentry") - : "$StaticLinks.urlentry.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urlentry-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urlentry.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[104]\n"; print( $frame? "\n" : "   " ); @@ -10199,7 +10273,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=urlexit") - : "$StaticLinks.urlexit.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urlexit-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urlexit.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[116]\n"; print( $frame? "\n" : "   " ); @@ -10220,7 +10294,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=osdetail") - : "$StaticLinks.osdetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.osdetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.osdetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[58]\n"; print( $frame? "\n" : "   " ); @@ -10235,7 +10309,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=unknownos") - : "$StaticLinks.unknownos.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.unknownos-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.unknownos.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[0]\n"; print( $frame? "\n" : "   " ); @@ -10256,7 +10330,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=browserdetail") - : "$StaticLinks.browserdetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.browserdetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.browserdetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[58]\n"; print( $frame? "\n" : "   " ); @@ -10271,7 +10345,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=unknownbrowser") - : "$StaticLinks.unknownbrowser.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.unknownbrowser-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.unknownbrowser.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[0]\n"; print( $frame? "\n" : "   " ); @@ -10407,7 +10481,7 @@ . ( $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}") - : "$StaticLinks.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.$StaticExt" ) ) . "\">$Message[76]\n"; } @@ -13898,7 +13972,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=downloads") - : "$StaticLinks.downloads.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.downloads-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.downloads.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; &tab_head( "$title", 0, 0, 'downloads' ); @@ -14226,7 +14300,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=alldomains") - : "$StaticLinks.alldomains.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.alldomains-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.alldomains.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; &tab_head( "$title", 19, 0, 'countries' ); @@ -14456,21 +14530,21 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=allhosts") - : "$StaticLinks.allhosts.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.allhosts-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.allhosts.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]   -   $Message[9]   -   $Message[45]"; &tab_head( "$title", 19, 0, 'visitors' ); @@ -14604,7 +14678,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=alllogins") - : "$StaticLinks.alllogins.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.alllogins-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.alllogins.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; if ( $ShowAuthenticatedUsers =~ /L/i ) { @@ -14613,7 +14687,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=lastlogins") - : "$StaticLinks.lastlogins.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.lastlogins-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.lastlogins.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[9]"; } @@ -14741,14 +14815,14 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=allrobots") - : "$StaticLinks.allrobots.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.allrobots-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.allrobots.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]   -   $Message[9]", 19, 0, 'robots' @@ -15011,7 +15085,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=urldetail") - : "$StaticLinks.urldetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urldetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urldetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; if ( $ShowPagesStats =~ /E/i ) { @@ -15020,7 +15094,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=urlentry") - : "$StaticLinks.urlentry.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urlentry-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urlentry.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[104]"; } @@ -15030,7 +15104,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=urlexit") - : "$StaticLinks.urlexit.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.urlexit-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.urlexit.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[116]"; } @@ -15260,14 +15334,14 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=osdetail") - : "$StaticLinks.osdetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.osdetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.osdetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]/$Message[58]   -   $Message[0]"; &tab_head( "$title", 19, 0, 'os' ); @@ -15398,14 +15472,14 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=browserdetail") - : "$StaticLinks.browserdetail.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.browserdetail-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.browserdetail.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]/$Message[58]   -   $Message[0]"; &tab_head( "$title", 19, 0, 'browsers' ); @@ -15652,7 +15726,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=refererse") - : "$StaticLinks.refererse.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.refererse-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.refererse.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]
\n"; if ( scalar keys %_se_referrals_h ) { @@ -15724,7 +15798,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=refererpages") - : "$StaticLinks.refererpages.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.refererpages-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.refererpages.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]
\n"; if ( scalar keys %_pagesrefs_h ) { @@ -15871,7 +15945,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=keyphrases") - : "$StaticLinks.keyphrases.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.keyphrases-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.keyphrases.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]", 19, @@ -15942,7 +16016,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode("$AWScript${NewLinkParams}output=keywords") - : "$StaticLinks.keywords.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.keywords-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.keywords.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]", 19, @@ -16125,7 +16199,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=errors$key") - : "$StaticLinks.errors$key.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.errors$key-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.errors$key.$StaticExt" ) ) . "\"$NewLinkTarget>$key"; } @@ -16299,7 +16373,7 @@ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks ? XMLEncode( "$AWScript${NewLinkParams}output=allextra$extranum") - : "$StaticLinks.allextra$extranum.$StaticExt" + : ( ($MultipleMonthPatch) ? "$StaticLinks.allextra$extranum-$YearRequired-$MonthRequired.$StaticExt" : "$StaticLinks.allextra$extranum.$StaticExt" ) ) . "\"$NewLinkTarget>$Message[80]"; print ""; @@ -16716,7 +16790,7 @@ } } if ( $QueryString =~ /(^|&|&)staticlinks/i ) { - $StaticLinks = "$PROG.$SiteConfig"; + $StaticLinks = "$PROG" . ( ($MultipleMonthPatch) ? "" : ".$SiteConfig" ); } if ( $QueryString =~ /(^|&|&)staticlinks=([^&]+)/i ) { $StaticLinks = "$2"; @@ -17225,6 +17299,12 @@ # ListOfYears contains max month found $ListOfYears{"$2"} = "$1"; } + if ( !$ListOfMonths{$2} ) { + $ListOfMonths{$2} = (); + } + if ( !$ListOfMonths{"$2"}{"$1"} ) { + $ListOfMonths{"$2"}{"$1"} = 1; + } my $rangestring = ( $2 || "" ) . ( $1 || "" ) . ( $3 || "" ) . ( $4 || "" ); if ( $rangestring gt $lastdatebeforeupdate ) {