###############################################################################
# 
# <p>アクセス数の多い順にページ名を一覧表示します。</p>
# <p>引数で表示件数を指定できます。</p>
# <pre>
# {{access 5}}
# </pre>
# <p>サイドバーに入れる場合など、縦に表示することもできます。</p>
# <pre>
# {{access 5,v}}
# </pre>
# 
###############################################################################
package plugin::access::Access;
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 $way    = shift;
	
	if($way eq ""){
		$way = "H";
	}
	
	if($max eq "V" || $max eq "v"){
		$way = "V";
		$max = "";
	} elsif($max eq "H" || $max eq "h"){
		$way = "H";
		$max = "";
	}
	
	my ($line,%count);
	
	open(LOG,$wiki->config('log_dir')."/".$wiki->config('access_log_file')) or return "";
	while(my $line=<LOG>){
		chomp $line;
		my ($page) = split(/ /,$line);
		$page = Util::url_decode($page);
		$count{$page}++;
	}
	close(LOG);
	
	my @keys;
	foreach(keys(%count)){
		push(@keys,$_);
	}
	@keys = sort {
		my $count1 = $count{$a};
		my $count2 = $count{$b};
		return $count2<=>$count1;
	} @keys;
	
	my $flag = 0;
	my $ret = "";
	
	foreach(@keys){
		if($max ne "" && $flag==$max){
			last;
		}
		if($wiki->page_exists($_) && $wiki->can_show($_)){
			if($way eq "H" || $way eq "h"){
				if($flag!=0){ $ret = $ret." / "; }
			} else {
				$ret = $ret."*";
			}
			$ret = $ret."[[$_]] (".$count{$_}.")";
			$flag++;
			
			if($way ne "H" && $way ne "h"){
				$ret .= "\n";
			}
		}
	}
	return $ret;
}

1;