2 // $Id: referer.inc.php,v 1.7 2004/07/31 03:09:20 henoheno Exp $
4 * PukiWiki Referer ¥×¥é¥°¥¤¥ó(¥ê¥ó¥¯¸µÉ½¼¨¥×¥é¥°¥¤¥ó)
5 * (C) 2003, Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
10 define('CONFIG_REFERER','plugin/referer/config');
12 function plugin_referer_action()
14 global $vars,$referer;
17 // Refererµ¡Ç½¤ò»ÈÍѤ·¤Æ¤¤¤Ê¤¤
20 return array('msg'=>'','body'=>'');
23 if (array_key_exists('page',$vars) and is_page($vars['page']))
26 $sort = (empty($vars['sort'])) ? '0d' : $vars['sort'];
29 'msg' => $_referer_msg['msg_H0_Refer'],
30 'body' => referer_body($vars['page'],$sort)
33 $pages = get_existpages(TRACKBACK_DIR,'.ref');
35 if (count($pages) == 0)
37 return array('msg'=>'','body'=>'');
41 'msg' => 'referer list',
42 'body' => page_list($pages,'referer',FALSE)
47 function referer_body($page,$sort)
49 global $script,$_referer_msg;
51 $data = tb_get(tb_get_filename($page,'.ref'));
52 if (count($data) == 0)
54 return '<p>no data.</p>';
56 $bg = referer_set_color();
58 $arrow_last = $arrow_1st = $arrow_ctr = '';
59 $color_last = $color_1st = $color_ctr = $color_ref = $bg['etc'];
66 case '0d': // 0d ºÇ½ª¹¹¿·Æü»þ(¿·Ãå½ç)
67 usort($data,create_function('$a,$b','return $b[0] - $a[0];'));
68 $color_last = $bg['cur'];
69 $arrow_last = $_referer_msg['msg_Chr_darr'];
72 case '0a': // 0a ºÇ½ª¹¹¿·Æü»þ(ÆüÉÕ½ç)
73 usort($data,create_function('$a,$b','return $a[0] - $b[0];'));
74 $color_last = $bg['cur'];
75 $arrow_last = $_referer_msg['msg_Chr_uarr'];
78 case '1d': // 1d ½é²óÅÐÏ¿Æü»þ(¿·Ãå½ç)
79 usort($data,create_function('$a,$b','return $b[1] - $a[1];'));
80 $color_1st = $bg['cur'];
81 $arrow_1st = $_referer_msg['msg_Chr_darr'];
84 case '1a': // 1a ½é²óÅÐÏ¿Æü»þ(ÆüÉÕ½ç)
85 usort($data,create_function('$a,$b','return $a[1] - $b[1];'));
86 $color_1st = $bg['cur'];
87 $arrow_1st = $_referer_msg['msg_Chr_uarr'];
90 case '2d': // 2d ¥«¥¦¥ó¥¿(Â礤¤½ç)
91 usort($data,create_function('$a,$b','return $b[2] - $a[2];'));
92 $color_ctr = $bg['cur'];
93 $arrow_ctr = $_referer_msg['msg_Chr_darr'];
96 case '2a': // 2a ¥«¥¦¥ó¥¿(¾®¤µ¤¤½ç)
97 usort($data,create_function('$a,$b','return $a[2] - $b[2];'));
98 $color_ctr = $bg['cur'];
99 $arrow_ctr = $_referer_msg['msg_Chr_uarr'];
102 case '3': // 3 Referer
103 usort($data,create_function('$a,$b','return ($a[3] == $b[3]) ? 0 : (($a[3] > $b[3]) ? 1 : -1);'));
104 $color_ref = $bg['cur'];
109 foreach ($data as $arr)
111 // 0:ºÇ½ª¹¹¿·Æü»þ, 1:½é²óÅÐÏ¿Æü»þ, 2:»²¾È¥«¥¦¥ó¥¿, 3:Referer ¥Ø¥Ã¥À, 4:ÍøÍѲÄÈݥե饰(1¤Ï͸ú)
112 list($ltime,$stime,$count,$url,$enable) = $arr;
114 // ÈóASCII¥¥ã¥é¥¯¥¿(¤À¤±)¤òURL¥¨¥ó¥³¡¼¥É¤·¤Æ¤ª¤¯ BugTrack/440
115 $e_url = htmlspecialchars(preg_replace('/([" \x80-\xff]+)/e','rawurlencode("$1")',$url));
116 $s_url = htmlspecialchars(mb_convert_encoding(rawurldecode($url),SOURCE_ENCODING,'auto'));
118 $lpass = get_passage($ltime,FALSE); // ºÇ½ª¹¹¿·Æü»þ¤«¤é¤Î·Ð²á»þ´Ö
119 $spass = get_passage($stime,FALSE); // ½é²óÅÐÏ¿Æü»þ¤«¤é¤Î·Ð²á»þ´Ö
120 $ldate = get_date($_referer_msg['msg_Fmt_Date'],$ltime); // ºÇ½ª¹¹¿·Æü»þʸ»úÎó
121 $sdate = get_date($_referer_msg['msg_Fmt_Date'],$stime); // ½é²óÅÐÏ¿Æü»þʸ»úÎó
123 $body .= " <tr>\n <td>$ldate</td>\n <td>$lpass</td>\n";
124 $body .= ($count == 1) ? " <td colspan=\"2\">N/A</td>\n" : " <td>$sdate</td>\n <td>$spass</td>\n";
125 $body .= " <td style=\"text-align:right;\">$count</td>\n";
127 // ŬÍÑÉԲĥǡ¼¥¿¤Î¤È¤¤Ï¥¢¥ó¥«¡¼¤ò¤Ä¤±¤Ê¤¤
128 $body .= referer_ignore_check($url) ?
129 " <td>$s_url</td>\n" : " <td><a href=\"$e_url\">$s_url</a></td>\n";
132 $href = $script.'?plugin=referer&page='.rawurlencode($page);
134 <table border="1" cellspacing="1" summary="Referer">
136 <td style="background-color:$color_last" colspan="2">
137 <a href="$href&sort=$sort_last">{$_referer_msg['msg_Hed_LastUpdate']}$arrow_last</a>
139 <td style="background-color:$color_1st" colspan="2">
140 <a href="$href&sort=$sort_1st">{$_referer_msg['msg_Hed_1stDate']}$arrow_1st</a>
142 <td style="background-color:$color_ctr;text-align:right">
143 <a href="$href&sort=$sort_ctr">{$_referer_msg['msg_Hed_RefCounter']}$arrow_ctr</a>
145 <td style="background-color:$color_ref">
146 <a href="$href&sort=3">{$_referer_msg['msg_Hed_Referer']}</a>
154 function referer_set_color()
166 $config = new Config(CONFIG_REFERER);
168 $pconfig_color = $config->get('COLOR');
170 foreach ($pconfig_color as $x)
173 $color[$x[0]] = htmlspecialchars(
174 preg_match('/BGCOLOR\(([^)]+)\)/si',$x[1],$matches) ? $matches[1] : $x[1]
181 function referer_ignore_check($url)
186 if (!isset($ignore_url))
188 $config = new Config(CONFIG_REFERER);
190 $ignore_url = $config->get('IGNORE');
194 foreach ($ignore_url as $x)
196 if (strpos($url,$x) !== FALSE)