CPAN-Testers-WWW-Statistics
view release on metacpan or search on metacpan
lib/CPAN/Testers/WWW/Statistics/Pages.pm view on Meta::CPAN
#----------------------------------------------------------------------------
=head1 NAME
CPAN::Testers::WWW::Statistics::Pages - CPAN Testers Statistics pages.
=head1 SYNOPSIS
my %hash = { config => 'options' };
my $obj = CPAN::Testers::WWW::Statistics->new(%hash);
my $ct = CPAN::Testers::WWW::Statistics::Pages->new(parent => $obj);
$ct->update_full(); # updates statistics data and web pages
# alternatively called individual processes
$ct->update_data(); # updates statistics data
$ct->build_basics(); # updates basic web pages
$ct->build_matrices(); # updates matrix style web pages
$ct->build_stats(); # updates stats style web pages
=head1 DESCRIPTION
Using the cpanstats database, this module extracts all the data and generates
all the HTML pages needed for the CPAN Testers Statistics website. In addition,
also generates the data files in order generate the graphs that appear on the
site.
Note that this package should not be called directly, but via its parent as:
my %hash = { config => 'options' };
my $obj = CPAN::Testers::WWW::Statistics->new(%hash);
$obj->make_pages(); # updates statistics data and web pages
# alternatively called individual processes
$obj->update(); # updates statistics data
$obj->make_basics(); # updates basic web pages
$obj->make_matrix(); # updates matrix style web pages
$obj->make_stats(); # updates stats style web pages
=cut
# -------------------------------------
# Library Modules
use Data::Dumper;
use DateTime;
use File::Basename;
use File::Copy;
use File::Path;
use File::Slurp;
use HTML::Entities;
use IO::File;
use JSON;
use Sort::Versions;
use Template;
#use Time::HiRes qw ( time );
use Time::Piece;
use Try::Tiny;
# -------------------------------------
# Variables
my %month = (
0 => 'January', 1 => 'February', 2 => 'March', 3 => 'April',
4 => 'May', 5 => 'June', 6 => 'July', 7 => 'August',
8 => 'September', 9 => 'October', 10 => 'November', 11 => 'December'
);
my @months = map { $month{$_} } keys %month;
my @days = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
my $ADAY = 86400;
my %matrix_limits = (
all => [ 1000, 5000 ],
month => [ 100, 500 ]
);
# -------------------------------------
# Subroutines
=head1 INTERFACE
=head2 The Constructor
=over 4
=item * new
Page creation object. Allows the user to turn or off the progress tracking.
new() takes an option hash as an argument, which may contain 'progress => 1'
to turn on the progress tracker.
=back
=cut
sub new {
my $class = shift;
my %hash = @_;
die "Must specify the parent statistics object\n" unless(defined $hash{parent});
my $self = {parent => $hash{parent}};
bless $self, $class;
$self->setdates();
return $self;
}
=head2 Public Methods
=over 4
=item * setdates
Prime all key date variable.
( run in 2.073 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )