###############################################################################
# 
# <p>アクセス数の多い順にページ名を日毎x件表示します。</p>
# <p>引数で表示件数を指定できます。</p>
# <pre>
# {{accessdays 5(上位x件},5(y日分)}}
# </pre>
# <p>デフォルトは5件,5日です。</p>
# 
###############################################################################
package plugin::access::AccessDays;
use strict;
#==============================================================================
# コンストラクタ
#==============================================================================
sub new {
	my $class = shift;
	my $self = {};
	return bless $self,$class;
}

#==============================================================================
# パラグラフ関数
#==============================================================================
sub paragraph {
	my $self    = shift;
	my $wiki    = shift;
	my $maxrank = shift;
	my $maxdays = shift;
	my $access  = {};
	my $buf     = "";

	if($maxrank eq ""){
	    $maxrank = 5;
	}

	if($maxdays eq ""){
	    $maxdays = 5;
	}

	open(LOG,$wiki->config('log_dir')."/".$wiki->config('access_log_file')) or return "";

	while(my $line=<LOG>){
		chomp $line;
		my ($page,$date) = split(/ /,$line);
		($date =~ m|\d{4}/\d{2}/\d{2}|o) or next;
		$access->{$date}={} unless defined($access->{$date});
		$page = Util::url_decode($page);
		$access->{$date}->{$page}++;
	}
	close(LOG);
	
	my @days = keys(%{$access});

	@days = sort {
	    return $b cmp $a;
	} @days;
	
	foreach my $day (@days){
		my $tmpday = $day;
		# recentdaysと同じ日付形式に
		$tmpday =~ s/\/0/\//g; 
		$buf .= "'''$tmpday'''\n";
		my @pages = keys(%{$access->{$day}});
		@pages = sort {
			my $count1=$access->{$day}->{$a};
			my $count2=$access->{$day}->{$b};
			return $count2 <=> $count1;
		}@pages;
		
		my $rank = $maxrank;
		foreach my $page (@pages){
			# 削除されたページと参照権限のないページを省く
			next if (!$wiki->page_exists($page) || !$wiki->can_show($page));
			my $pagecount = $access->{$day}->{$page};
			$buf .= "*[[$page]]($pagecount)\n";
			$rank--;
			last unless $rank;
		}
		
		$maxdays--;
		last unless $maxdays;
	}
	
	return $buf;
}

1;