;
chomp $_; s/\r//;
- if (! $_) { error("Error: History file \"$DirData/$PROG$month$year$FileSuffix.txt\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); }
+ if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); }
@field=split(/\s+/,$_); $countlines++;
}
if ($Debug) { debug(" End of SIDER_404 section ($count entries, $countloaded loaded)"); }
@@ -2272,18 +2280,18 @@ sub Save_History_File {
$keysinkeylist{$key}=1;
my $keyphrase=$key;
print HISTORYTMP "$keyphrase $_keyphrases{$key}\n";
- my @wordarray=split(/\+/,$key); foreach my $word (@wordarray) { $_keywords{$word}+=$_keyphrases{$key}; }
+ my @wordarray=split(/\+/,$key); foreach my $word (@wordarray) { $_keywords{$word}+=$_keyphrases{$key}; } # To init %_keywords
}
foreach my $key (keys %_keyphrases) {
if ($keysinkeylist{$key}) { next; }
my $keyphrase=$key;
print HISTORYTMP "$keyphrase $_keyphrases{$key}\n";
- my @wordarray=split(/\+/,$key); foreach my $word (@wordarray) { $_keywords{$word}+=$_keyphrases{$key}; }
+ my @wordarray=split(/\+/,$key); foreach my $word (@wordarray) { $_keywords{$word}+=$_keyphrases{$key}; } # To init %_keywords
}
print HISTORYTMP "END_SEARCHWORDS\n";
print HISTORYTMP "\n";
print HISTORYTMP "# Search keywords - Number of search\n";
- print HISTORYTMP "# Only the $MaxNbOfKeywordsShown first number of search are saved\n";
+ print HISTORYTMP "# The $MaxNbOfKeywordsShown first number of search must be first (order not required for others)\n";
print HISTORYTMP "BEGIN_KEYWORDS\n";
&BuildKeyList($MaxNbOfKeywordsShown,$MinHitKeyword,\%_keywords,\%_keywords);
%keysinkeylist=();
@@ -2292,6 +2300,11 @@ sub Save_History_File {
my $keyword=$key;
print HISTORYTMP "$keyword $_keywords{$key}\n";
}
+ foreach my $key (keys %_keywords) {
+ if ($keysinkeylist{$key}) { next; }
+ my $keyword=$key;
+ print HISTORYTMP "$keyword $_keywords{$key}\n";
+ }
print HISTORYTMP "END_KEYWORDS\n";
# Other
@@ -2743,10 +2756,14 @@ if ((! $ENV{"GATEWAY_INTERFACE"}) && (! $SiteConfig)) {
print " unknownip to build page of all unresolved IP\n";
print " urldetail to list most often viewed pages \n";
print " urldetail:filter to list most often viewed pages matching filter\n";
- print " unknownos to list 'User Agents' with unknown OS\n";
- print " unknownbrowser to list 'User Agents' with unknown browser\n";
print " browserdetail to build page with browsers detailed versions\n";
+ print " unknownbrowser to list 'User Agents' with unknown browser\n";
+ print " unknownos to list 'User Agents' with unknown OS\n";
+ print " refererse to build page of all refering search engines\n";
+ print " refererpages to build page of all refering pages\n";
+# print " referersites to build page of all refering sites\n";
print " allkeyphrases to list all keyphrases used on search engines\n";
+ print " allkeywords to list all keywords used on search engines\n";
print " errors404 to list 'Referers' for 404 errors\n";
print " -staticlinks to have static links in HTML report page\n";
print " -lang=LL to output a HTML report in language LL (en,de,es,fr,it,nl,...)\n";
@@ -2886,8 +2903,6 @@ if ($UpdateStats && (! $AllowToUpdateStatsFromBrowser) && $ENV{"GATEWAY_INTERFAC
# Init global variables required for output and update process
%monthlib = ("01","$Message[60]","02","$Message[61]","03","$Message[62]","04","$Message[63]","05","$Message[64]","06","$Message[65]","07","$Message[66]","08","$Message[67]","09","$Message[68]","10","$Message[69]","11","$Message[70]","12","$Message[71]");
%monthnum = ("Jan","01","jan","01","Feb","02","feb","02","Mar","03","mar","03","Apr","04","apr","04","May","05","may","05","Jun","06","jun","06","Jul","07","jul","07","Aug","08","aug","08","Sep","09","sep","09","Oct","10","oct","10","Nov","11","nov","11","Dec","12","dec","12"); # monthnum must be in english because used to translate log date in apache log files
-$LastUpdate=0;
-$TotalEntries=0; $TotalExits=0; $TotalBytesPages=0; $TotalKeyphrases=0; $TotalDifferentPages=0; $TotalDifferentKeyphrases=0;
for (my $ix=1; $ix<=12; $ix++) {
my $monthix=$ix;if ($monthix < 10) { $monthix = "0$monthix"; }
$LastLine{$YearRequired.$monthix}=0;$FirstTime{$YearRequired.$monthix}=0;$LastTime{$YearRequired.$monthix}=0;$LastUpdate{$YearRequired.$monthix}=0;
@@ -3984,12 +3999,20 @@ EOF
if (!$TotalKeyphrases) { foreach my $key (keys %_keyphrases) { $TotalKeyphrases+=$_keyphrases{$key}; } }
# TotalKeywords (if not already specifically counted, we init it from _keywords hash table)
if (!$TotalKeywords) { foreach my $key (keys %_keywords) { $TotalKeywords+=$_keywords{$key}; } }
+ # TotalSearchEngines (if not already specifically counted, we init it from _se_referrals_h hash table)
+ if (!$TotalSearchEngines) { foreach my $key (keys %_se_referrals_h) { $TotalSearchEngines+=$_se_referrals_h{$key}; } }
+ # TotalRefererPages (if not already specifically counted, we init it from _pagesrefs_h hash table)
+ if (!$TotalRefererPages) { foreach my $key (keys %_pagesrefs_h) { $TotalRefererPages+=$_pagesrefs_h{$key}; } }
# TotalDifferentPages (if not already specifically counted, we init it from _url_p hash table)
if (!$TotalDifferentPages) { $TotalDifferentPages=scalar keys %_url_p; }
# TotalDifferentKeyphrases (if not already specifically counted, we init it from _keyphrases hash table)
if (!$TotalDifferentKeyphrases) { $TotalDifferentKeyphrases=scalar keys %_keyphrases; }
# TotalDifferentKeywords (if not already specifically counted, we init it from _keywords hash table)
if (!$TotalDifferentKeywords) { $TotalDifferentKeywords=scalar keys %_keywords; }
+ # TotalDifferentSearchEngines (if not already specifically counted, we init it from _se_referrals_h hash table)
+ if (!$TotalDifferentSearchEngines) { $TotalDifferentSearchEngines=scalar keys %_se_referrals_h; }
+ # TotalDifferentRefererPages (if not already specifically counted, we init it from _pagesrefs_h hash table)
+ if (!$TotalDifferentRefererPages) { $TotalDifferentRefererPages=scalar keys %_pagesrefs_h; }
# Define firstdaytocountaverage, lastdaytocountaverage, firstdaytoshowtime, lastdaytoshowtime
my $firstdaytocountaverage=$nowyear.$nowmonth."01"; # Set day cursor to 1st day of month
my $firstdaytoshowtime=$nowyear.$nowmonth."01"; # Set day cursor to 1st day of month
@@ -4026,8 +4049,10 @@ EOF
print "| $Message[7] : | $SiteDomain |
";
print "| $Message[35] : | ";
print "";
- foreach my $key (sort keys %LastUpdate) { if ($LastUpdate < $LastUpdate{$key}) { $LastUpdate = $LastUpdate{$key}; } }
- if ($LastUpdate) { print Format_Date($LastUpdate,0); }
+ # Search max of %LastUpdate
+ my $lastupdate=0;
+ foreach my $key (sort keys %LastUpdate) { if ($lastupdate < $LastUpdate{$key}) { $lastupdate = $LastUpdate{$key}; } }
+ if ($lastupdate) { print Format_Date($lastupdate,0); }
else { print "Never updated"; }
print " ";
if ($AllowToUpdateStatsFromBrowser && ! $StaticLinks) {
@@ -4356,6 +4381,70 @@ EOF
&html_end;
exit(0);
}
+ if ($QueryString =~ /output=refererse/i) {
+ print "$CENTER ";
+ &tab_head($Message[40],19);
+ print " |
|---|
| $TotalDifferentSearchEngines $Message[122] | ";
+ #print "$Message[56] | $Message[15] | ";
+ print "$Message[57] | $Message[15] |
\n";
+ $total_s=0;
+ my $count=0;
+ &BuildKeyList($MaxRowsInHTMLOutput,$MinHitRefer,\%_se_referrals_h,\%_se_referrals_h);
+ foreach my $key (@keylist) {
+ my $newreferer=CleanFromCSSA($SearchEnginesHashIDLib{$key}||$key);
+ my $p;
+ if ($TotalSearchEngines) { $p=int($_se_referrals_h{$key}/$TotalSearchEngines*1000)/10; }
+ print "| $newreferer | $_se_referrals_h{$key} | $p % |
\n";
+ $total_s += $_se_referrals_h{$key};
+ $count++;
+ }
+ if ($Debug) { debug("Total real / shown : $TotalSearchEngines / $total_s",2); }
+ $rest_s=$TotalSearchEngines-$total_s;
+ if ($rest_s > 0) {
+ my $p;
+ if ($TotalSearchEngines) { $p=int($rest_s/$TotalSearchEngines*1000)/10; }
+ print "| $Message[2] | $rest_s | ";
+ print "$p % |
\n";
+ }
+ &tab_end;
+ &html_end;
+ exit(0);
+ }
+ if ($QueryString =~ /output=refererpages/i) {
+ print "$CENTER
";
+ &tab_head($Message[41],19);
+ print "| $TotalDifferentRefererPages $Message[28] | ";
+ #print "$Message[56] | $Message[15] | ";
+ print "$Message[57] | $Message[15] |
\n";
+ $total_s=0;
+ my $count=0;
+ &BuildKeyList($MaxRowsInHTMLOutput,$MinHitRefer,\%_pagesrefs_h,\%_pagesrefs_h);
+ foreach my $key (@keylist) {
+ my $nompage=CleanFromCSSA($key);
+ if (length($nompage)>$MaxLengthOfURL) { $nompage=substr($nompage,0,$MaxLengthOfURL)."..."; }
+ my $p;
+ if ($TotalRefererPages) { $p=int($_pagesrefs_h{$key}/$TotalRefererPages*1000)/10; }
+ if ($ShowLinksOnUrl && ($key =~ /^http(s|):/i)) {
+ my $newkey=CleanFromCSSA($key);
+ print "| $nompage | $_pagesrefs_h{$key} | $p % |
\n";
+ } else {
+ print "| $nompage | $_pagesrefs_h{$key} | $p % |
\n";
+ }
+ $total_s += $_pagesrefs_h{$key};
+ $count++;
+ }
+ if ($Debug) { debug("Total real / shown : $TotalRefererPages / $total_s",2); }
+ $rest_s=$TotalRefererPages-$total_s;
+ if ($rest_s > 0) {
+ my $p;
+ if ($TotalRefererPages) { $p=int($rest_s/$TotalRefererPages*1000)/10; }
+ print "| $Message[2] | $rest_s | ";
+ print "$p % |
\n";
+ }
+ &tab_end;
+ &html_end;
+ exit(0);
+ }
if ($QueryString =~ /output=allkeyphrases/i) {
print "$CENTER
";
&tab_head($Message[43],19);
@@ -5118,18 +5207,24 @@ EOF
#------- Referrals by news group
print "| $Message[107] | $_from_p[5] | $p_p[5] % | $_from_h[5] | $p_h[5] % |
\n";
#------- Referrals by search engine
- print "$Message[40] \n";
+ print " |
$Message[40] - $Message[80] \n";
print "\n";
my $count=0;
+ $rest_h=0;
foreach my $key (sort { $_se_referrals_h{$b} <=> $_se_referrals_h{$a} } keys (%_se_referrals_h)) {
+ if ($count>=$MaxNbOfRefererShown) { $rest_h+=$_se_referrals_h{$key}; next; }
+ if ($_se_referrals_h{$key}<$MinHitRefer) { $rest_h+=$_se_referrals_h{$key}; next; }
my $newreferer=CleanFromCSSA($SearchEnginesHashIDLib{$key}||$key);
print "| - $newreferer | $_se_referrals_h{$key} | \n";
$count++;
}
+ if ($rest_h > 0) {
+ print "| - $Message[2] | $rest_h | ";
+ }
print " | \n";
print "$_from_p[2] | $p_p[2] % | $_from_h[2] | $p_h[2] % |
\n";
#------- Referrals by external HTML link
- print "$Message[41] \n";
+ print " |
$Message[41] - $Message[80] \n";
print "\n";
$count=0;
$rest_h=0;
@@ -5183,7 +5278,7 @@ EOF
if ($rest_s > 0) {
my $p;
if ($TotalKeyphrases) { $p=int($rest_s/$TotalKeyphrases*1000)/10; }
- print "| $Message[30] | $rest_s | ";
+ print " | $Message[124] | $rest_s | ";
print "$p % | \n";
}
&tab_end;
|