############################################################
# 
# <p>アクティブなユーザを一覧表示します。<p>
# <p>
# 引数で表示件数を指定できます。(0で全員表示)
# </p>
# <pre>
# {{actives 5}}
# </pre>
# <p>
# n日前までの統計をとることもできます。
# </p>
# <pre>
# {{actives 5,7}}
# </pre>
# 
############################################################
package plugin::editlog::Actives;
use strict;
#===========================================================
# コンストラクタ
#===========================================================
sub new {
	my $class = shift;
	my $self = {};
	return bless $self,$class;
}

#===========================================================
# 最近のアクセス回数をリスト表示
#===========================================================
sub paragraph {
	my $self = shift;
	my $wiki = shift;
	my $max  = shift;
	my $days = shift;
	my %count;
	my $cgi  = $wiki->get_CGI;
	
	return "更新履歴はありません。" if $wiki->config('log_dir') eq "";
	return "更新履歴はありません。" if ! -e $wiki->config('log_dir')."/useredit.log";
	
	my $oldest = 0;
	if(! $days) {
		$days = 30;
	}
	$oldest = time() - $days * 24 * 3600;
	
	open(DATA,$wiki->config('log_dir')."/useredit.log") or die $!;
	while(<DATA>){
		my($date, $time, $unixtime, $action, $subject, $id) = split(" ",$_);
		if ($unixtime > $oldest){
			$count{$id}++;
		}
	}
	close(DATA);
	
	my $content = "";
	my @members = reverse sort {$count{$a} <=> $count{$b}} keys(%count);
	if($max && $#members>$max-1){
		@members = @members[0..$max-1];
	}
	
	if($#members==-1){
		return "更新履歴はありません。";
	}
	
	foreach my $key(@members){
		if($key eq ""){
			$content .= "*未ログイン($count{$key})\n";
		} else {
			$content .= "*$key($count{$key})\n";
		}
	}
	
	return $content;
}

1;