66 lines
1.9 KiB
Perl
66 lines
1.9 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# This code was forked from the LiveJournal project owned and operated
|
|
# by Live Journal, Inc. The code has been modified and expanded by
|
|
# Dreamwidth Studios, LLC. These files were originally licensed under
|
|
# the terms of the license supplied by Live Journal, Inc, which can
|
|
# currently be found at:
|
|
#
|
|
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
|
|
#
|
|
# In accordance with the original license, this code and all its
|
|
# modifications are provided under the GNU General Public License.
|
|
# A copy of that license can be found in the LICENSE file included as
|
|
# part of this distribution.
|
|
|
|
use strict;
|
|
use GD::Graph::bars;
|
|
|
|
our %maint;
|
|
|
|
$maint{'genstatspics'} = sub {
|
|
my $dbh = LJ::get_db_writer();
|
|
my $sth;
|
|
|
|
### get posts by day data from summary table
|
|
print "-I- new accounts by day.\n";
|
|
$sth = $dbh->prepare(
|
|
"SELECT DATE_FORMAT(statkey, '%m-%d') AS 'day', statval AS 'new' FROM stats WHERE statcat='newbyday' ORDER BY statkey DESC LIMIT 60"
|
|
);
|
|
$sth->execute;
|
|
if ( $dbh->err ) { die $dbh->errstr; }
|
|
|
|
my @data;
|
|
my $i;
|
|
my $max;
|
|
while ( $_ = $sth->fetchrow_hashref ) {
|
|
my $val = $_->{'new'};
|
|
unshift @{ $data[0] }, ( $i++ % 5 == 0 ? $_->{'day'} : "" );
|
|
unshift @{ $data[1] }, $val;
|
|
if ( $val > $max ) { $max = $val; }
|
|
}
|
|
|
|
if (@data) {
|
|
|
|
# posts by day graph
|
|
my $g = GD::Graph::bars->new( 520, 350 );
|
|
$g->set(
|
|
x_label => 'Day',
|
|
y_label => 'Accounts',
|
|
title => 'New accounts per day',
|
|
tranparent => 0,
|
|
y_max_value => $max,
|
|
);
|
|
|
|
my $gd = $g->plot( \@data ) or die $g->error;
|
|
open( IMG, ">$LJ::HTDOCS/stats/newbyday.png" ) or die $!;
|
|
binmode IMG;
|
|
print IMG $gd->png;
|
|
close IMG;
|
|
}
|
|
|
|
print "-I- done.\n";
|
|
|
|
};
|
|
|
|
1;
|