CPAN-Testers-WWW-Statistics
view release on metacpan or search on metacpan
lib/CPAN/Testers/WWW/Statistics/Pages.pm view on Meta::CPAN
=back
=cut
sub setdates {
my $self = shift;
my $time = shift || time;
$self->{parent}->_log("init");
Time::Piece::day_list(@days);
Time::Piece::mon_list(@months);
# timestamp for now
my $t = localtime($time);
$self->{dates}{RUNTIME} = $t->strftime("%a, %e %b %Y %T %Z");
# todays date
my @datetime = localtime($time);
my $THISYEAR = ($datetime[5] + 1900);
my $THISMONTH = ($datetime[4]);
$self->{dates}{RUNDATE} = sprintf "%d%s %s %d", $datetime[3], _ext($datetime[3]), $month{$THISMONTH}, $THISYEAR;
# THISMONTH is the last date for all data
$self->{dates}{THISMONTH} = ($THISYEAR) * 100 + $THISMONTH + 1;
$self->{dates}{THISDATE} = sprintf "%s %d", $month{int($THISMONTH)}, $THISYEAR;
my $THATMONTH = $THISMONTH - 1;
my $THATYEAR = $THISYEAR;
if($THATMONTH < 0) {
$THATMONTH = 11;
$THATYEAR--;
}
# LASTMONTH is the Month/Year stats are run for
$self->{dates}{LASTMONTH} = sprintf "%04d%02d", $THATYEAR, int($THATMONTH+1);
$self->{dates}{LASTDATE} = sprintf "%s %d", $month{int($THATMONTH)}, $THATYEAR;
$self->{dates}{PREVMONTH} = sprintf "%02d/%02d", int($THATMONTH+1), $THATYEAR - 2000;
$THATMONTH--;
if($THATMONTH < 0) {
$THATMONTH = 11;
$THATYEAR--;
}
# THATMONTH is the previous Month/Year for a full matrix
$self->{dates}{THATMONTH} = sprintf "%04d%02d", $THATYEAR, int($THATMONTH+1);
$self->{parent}->_log( "THISYEAR=[$THISYEAR]" );
$self->{parent}->_log( "THATYEAR=[$THATYEAR]" );
$self->{parent}->_log( "DATES=" . Dumper( $self->{dates} ) );
# calculate database metrics
my @rows = $self->{parent}->{CPANSTATS}->get_query('array',"SELECT fulldate FROM cpanstats ORDER BY id DESC LIMIT 1");
my @time = $rows[0]->[0] =~ /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/;
$self->{dates}{RUNDATE2} = sprintf "%d%s %s %d", $time[2],_ext($time[2]),$month{$time[1]-1},$time[0];
$self->{dates}{RUNDATE3} = sprintf "%d%s %s %d, %02d:%02d", $time[2],_ext($time[2]),$month{$time[1]-1},$time[0],$time[3],$time[4];
}
sub update_full {
my $self = shift;
$self->{parent}->_log("start update_full");
$self->build_basics();
$self->build_data();
$self->build_matrices();
$self->build_stats();
$self->build_leaders();
$self->{parent}->_log("finish update_full");
}
sub update_data {
my $self = shift;
$self->{parent}->_log("start update_data");
$self->build_data();
$self->{parent}->_log("finish update_data");
}
sub build_basics {
my $self = shift;
$self->{parent}->_log("start build_basics");
## BUILD INFREQUENT PAGES
$self->_write_basics();
$self->_missing_in_action();
$self->{parent}->_log("finish build_basics");
}
sub build_matrices {
my $self = shift;
$self->{parent}->_log("start build_matrices");
$self->storage_read();
if($self->{perls}) {
$self->{parent}->_log("building dist hash from storage");
my @versions = sort {versioncmp($b,$a)} keys %{$self->{perls}};
$self->{versions} = \@versions;
$self->_build_osname_matrix();
$self->_build_platform_matrix();
}
$self->{parent}->_log("finish build_matrices");
}
sub build_stats {
my $self = shift;
$self->{parent}->_log("stats start");
$self->{parent}->_log("building dist hash from storage");
$self->storage_read();
my $testers = $self->storage_read('testers');
$self->{parent}->_log("dist hash from storage built");
if($testers) {
for my $tester (keys %$testers) {
$self->{counts}{$testers->{$tester}{first}}{first}++;
$self->{counts}{$testers->{$tester}{last}}{last}++;
}
$testers = {}; # save memory
$self->{parent}->_log("tester counts built");
my @versions = sort {versioncmp($b,$a)} keys %{$self->{perls}};
$self->{versions} = \@versions;
## BUILD INDEPENDENT STATS
$self->_build_sizes();
( run in 0.888 second using v1.01-cache-2.11-cpan-5735350b133 )