Compare commits
4 commits
462f28505d
...
d02ae5e2ff
Author | SHA1 | Date | |
---|---|---|---|
|
d02ae5e2ff | ||
|
07e4543717 | ||
|
0102b72971 | ||
|
ed3fb3cda0 |
|
@ -215,10 +215,14 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
|
|||
# output client versions
|
||||
if ($OptVersions) {
|
||||
### get client versions
|
||||
# $SQLWhereClause without 'ALL' version
|
||||
# $SQLWhereClause without 'ALL' version, with client and month set
|
||||
$SQLWhereClause = SQLBuildClause('where',$SQLWherePeriod,$SQLWhereNames,
|
||||
$ExcludeSums,"version != 'ALL'","client = '$Client'",
|
||||
$ExcludeSums,"version != 'ALL'",
|
||||
'client = ?','month = ?',
|
||||
&SQLSetBounds('default',$LowBound,$UppBound));
|
||||
# push client and month to @SQLVersBindNames
|
||||
my @SQLVersBindNames = @SQLBindNames;
|
||||
push (@SQLVersBindNames, ($Client, $Month));
|
||||
|
||||
# save length of longest client
|
||||
my $ClientMaxLenght = $MaxLength;
|
||||
|
@ -227,7 +231,7 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
|
|||
# for formatting purposes
|
||||
my ($MaxLength,$MaxValLength) = &GetMaxLength($DBHandle,$Conf{'DBTable'},
|
||||
'version','postings',$SQLWhereClause,
|
||||
'',@SQLBindNames);
|
||||
'',@SQLVersBindNames);
|
||||
if ($MaxLength) {
|
||||
# add lenght of '- '
|
||||
$MaxLength += 2;
|
||||
|
@ -242,7 +246,7 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
|
|||
$SQLWhereClause,$SQLGroupClause,
|
||||
$SQLOrderClause));
|
||||
# execute query
|
||||
$DBVersQuery->execute(@SQLBindNames)
|
||||
$DBVersQuery->execute(@SQLVersBindNames)
|
||||
or &Bleat(2,sprintf("Can't get version data for %s from %s.%s: %s\n",
|
||||
$CaptionPeriod,$Conf{'DBDatabase'},$Conf{'DBTable'},
|
||||
$DBI::errstr));
|
||||
|
|
|
@ -497,9 +497,15 @@ sub ClientStats {
|
|||
foreach (@Clients) {
|
||||
# filter agents for User-Agent with multiple agents
|
||||
next if $#Clients && exists($DropAgent{lc($_->{'agent'})});
|
||||
# remove whitespace
|
||||
$_->{'agent'} =~ s/^\s+|\s+$//g;
|
||||
$_->{'version'} =~ s/^\s+|\s+$//g if $_->{'version'};
|
||||
# encode to utf-8, if necessary
|
||||
$_->{'agent'} = encode('UTF-8', $_->{'agent'}) if $_->{'agent'} =~ /[\x80-\x{ffff}]/;
|
||||
$_->{'version'} = encode('UTF-8', $_->{'version'}) if $_->{'version'} and $_->{'version'} =~ /[\x80-\x{ffff}]/;
|
||||
# truncate overlong clients or versions
|
||||
$_->{'agent'} = substr($_->{'agent'}, 0, 150) if length($_->{'agent'}) > 150;
|
||||
$_->{'version'} = substr($_->{'version'}, 0, 50) if $_->{'version'} and length($_->{'version'}) > 50;
|
||||
# special cases
|
||||
# Mozilla
|
||||
$_->{'agent'} = 'Mozilla' if $_->{'agent'} eq '•Mozilla';
|
||||
|
@ -661,8 +667,7 @@ sub RemoveComments {
|
|||
# remove superfluous whitespace in header
|
||||
# and whitespace around header
|
||||
$Header =~ s/\s+/ /g;
|
||||
$Header =~ s/^\s+//;
|
||||
$Header =~ s/\s+$//;
|
||||
$Header =~ s/^\s+|\s+$//g;
|
||||
|
||||
return $Header;
|
||||
}
|
||||
|
|
|
@ -134,7 +134,7 @@ wenn Sie ermittelbar sind; daher kann die Summe der Newsreader-Versionen
|
|||
kleiner sein als die Postingzahl fuer den Newsreader. Ausserdem koennen
|
||||
an einem Beitrag mehrere Clients beteiligt sein, bspw. der Newsreader
|
||||
und ein lokaler Server wie der Hamster. Daher kann die Summe aller
|
||||
Newsreader groesser sein als die Summer der Postings; auch ergeben die
|
||||
Newsreader groesser sein als die Summe der Postings; auch ergeben die
|
||||
Prozentzahlen dementsprechend in der Summe mehr als 100%.
|
||||
CLIENTSOUT
|
||||
|
||||
|
|
|
@ -9,7 +9,10 @@ NewsStats 0.4.0 (unreleased)
|
|||
* Add clientstats (for clients).
|
||||
* Add ClientStats to postingstats.
|
||||
* gatherstats: Don't die on parsing errors.
|
||||
* DBClnts: set version length to to 50.
|
||||
* DBClnts: set version length to 50.
|
||||
* gatherstats: Truncate overlong clients or versions.
|
||||
* gatherstats: Remove whitespace from client and version.
|
||||
* Fix version queries.
|
||||
|
||||
NewsStats 0.3.0 (2025-05-18)
|
||||
* Extract GroupStats (in gatherstats) to subroutine.
|
||||
|
|
Loading…
Reference in a new issue