OSDN Git Service

パーミッション変更
[fswiki/fswiki.git] / plugin / access / Access.pm
1 ###############################################################################
2
3 # <p>¥¢¥¯¥»¥¹¿ô¤Î¿¤¤½ç¤Ë¥Ú¡¼¥¸Ì¾¤ò°ìÍ÷ɽ¼¨¤·¤Þ¤¹¡£</p>
4 # <p>°ú¿ô¤Çɽ¼¨·ï¿ô¤ò»ØÄê¤Ç¤­¤Þ¤¹¡£</p>
5 # <pre>
6 # {{access 5}}
7 # </pre>
8 # <p>¥µ¥¤¥É¥Ð¡¼¤ËÆþ¤ì¤ë¾ì¹ç¤Ê¤É¡¢½Ä¤Ëɽ¼¨¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£</p>
9 # <pre>
10 # {{access 5,v}}
11 # </pre>
12
13 ###############################################################################
14 package plugin::access::Access;
15 use strict;
16 #==============================================================================
17 # ¥³¥ó¥¹¥È¥é¥¯¥¿
18 #==============================================================================
19 sub new {
20         my $class = shift;
21         my $self = {};
22         return bless $self,$class;
23 }
24
25 #==============================================================================
26 # ¥Ñ¥é¥°¥é¥Õ´Ø¿ô
27 #==============================================================================
28 sub paragraph {
29         my $self   = shift;
30         my $wiki   = shift;
31         my $max    = shift;
32         my $way    = shift;
33         
34         if($way eq ""){
35                 $way = "H";
36         }
37         
38         if($max eq "V" || $max eq "v"){
39                 $way = "V";
40                 $max = "";
41         } elsif($max eq "H" || $max eq "h"){
42                 $way = "H";
43                 $max = "";
44         }
45         
46         my ($line,%count);
47         
48         open(LOG,$wiki->config('log_dir')."/".$wiki->config('access_log_file')) or return "";
49         while(my $line=<LOG>){
50                 chomp $line;
51                 my ($page) = split(/ /,$line);
52                 $page = Util::url_decode($page);
53                 $count{$page}++;
54         }
55         close(LOG);
56         
57         my @keys;
58         foreach(keys(%count)){
59                 push(@keys,$_);
60         }
61         @keys = sort {
62                 my $count1 = $count{$a};
63                 my $count2 = $count{$b};
64                 return $count2<=>$count1;
65         } @keys;
66         
67         my $flag = 0;
68         my $ret = "";
69         
70         foreach(@keys){
71                 if($max ne "" && $flag==$max){
72                         last;
73                 }
74                 if($wiki->page_exists($_) && $wiki->can_show($_)){
75                         if($way eq "H" || $way eq "h"){
76                                 if($flag!=0){ $ret = $ret." / "; }
77                         } else {
78                                 $ret = $ret."*";
79                         }
80                         $ret = $ret."[[$_]] (".$count{$_}.")";
81                         $flag++;
82                         
83                         if($way ne "H" && $way ne "h"){
84                                 $ret .= "\n";
85                         }
86                 }
87         }
88         return $ret;
89 }
90
91 1;