use strict;
use File::Find;
use POSIX qw(strftime);
use lib '/home/httpd/lib/perl/';
use LONCAPA::Configuration;
use Date::Manip;
my $start_time=&UnixDate("Aug 30th 00:00:00 2004","%s");
my @counts=('1','10','100','1000','10000','100000','250000');
sub only_user_activitylog_files {
print (join("\n",@_));
return 1;
}
my %data;
my $numusers;
sub process_activitylog_file {
if ($File::Find::dir=~m|/\d/\d/\d/|) { return; }
if ($_ ne 'activity.log') { return; }
open(FILE,"<$File::Find::name");
$numusers++;
my $user=(split('/',$File::Find::dir))[-1];
while (my $line=<FILE>) {
if ($line !~ /Login/) { next; }
my ($date)=split(':',$line,2);
if ($date > $start_time) { push (@{$data{$date}},$user); }
}
if ($numusers%100 == 0) {
print "\b\b\b\b\b\b\b\b\b\b\b\b\b\bDid $user";
}
}
sub print_data {
my $total_login=0;
my %byday;
print("\n");
foreach my $key (sort(keys(%data))) {
#print(scalar(localtime($key))." ".scalar(@{$data{$key}})."\n");
$total_login+=scalar(@{$data{$key}});
my $day=strftime('%F',localtime($key));
$byday{$day}+=scalar(@{$data{$key}});
while ($total_login >= $counts[0]) {
print("The $counts[0] ($total_login) login was ".
join(', ',@{$data{$key}})."\n");
shift(@counts);
}
}
foreach my $key (sort(keys(%byday))) {
print("$key -> $byday{$key}\n");
}
print("total -> $total_login\n");
}
$|=1;
sub main {
my $perlvar=LONCAPA::Configuration::read_conf('loncapa.conf');
find(
{
# preprocess => \&only_user_activitylog_files,
# wanted => \&print_filename,
# wanted => \&log_metadata,
wanted => \&process_activitylog_file,
},
$perlvar->{'lonUsersDir'}.'/'.$perlvar->{'lonDefDomain'});
&print_data();
}
&main();
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>