OSDN Git Service

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