Revisão | 7b5a4426fcaabc6b7f6654fe8bb50e2353f1d2d0 (tree) |
---|---|
Hora | 2022-01-24 02:10:08 |
Autor | hai-fun <haifun129@gmai...> |
Commiter | hai-fun |
PHP8
@@ -1,33 +1,34 @@ | ||
1 | 1 | <?php |
2 | 2 | // $Id: tvote.inc.php,v 0.25 2005/02/12 18:00:00 r.tokiwa Exp $ |
3 | 3 | |
4 | -# ソート・追加対応PukiWiki投票プラグイン | |
4 | +# ?純?若???肢申??絲上?PukiWiki??腑??????違?ゃ? | |
5 | 5 | # Note: based on vote.inc.php,v 1.14 2003/07/03 05:28:04 arino |
6 | 6 | # Copyright: Ryota Tokiwa |
7 | 7 | # License: GPL |
8 | 8 | # Uage: See README.TXT |
9 | + // v0.26 PHP8絲上? 2021-12-17 by?????泣?? | |
9 | 10 | |
10 | -# 使用目的に合わせて定数を調整してください。 | |
11 | -# 投票前に得票数を表示する(TRUE)/しない(FALSE) | |
11 | +# 篏睡?????????????????違??茯炊?眼????????????? | |
12 | +# ??腑??????腑??違??茵?ず????(TRUE)鐚??????(FALSE) | |
12 | 13 | define('_TVOTE_OPENCOUNT',TRUE); |
13 | -# ページのタイムスタンプを更新をしない(TRUE)/する(FALSE)。 | |
14 | +# ???若?吾???帥?ゃ???鴻?帥?潟?????贋?違????????(TRUE)鐚????(FALSE)?? | |
14 | 15 | define('_TVOTE_NOTIMESTAMP',TRUE); |
15 | -# クッキーに保存する投票数の上限。100以下にしてください。 | |
16 | +# ???????若???絖???????腑??違???????100篁ヤ???????????????? | |
16 | 17 | define('_TVOTE_VOTEDLIST_MAX','30'); |
17 | -# クッキーの保存日数。 | |
18 | +# ???????若???絖??ユ?違?? | |
18 | 19 | define('_TVOTE_VALIDDAYS',180); |
19 | -# ソートする(TRUE)/しない(FALSE) | |
20 | +# ?純?若??????(TRUE)鐚??????(FALSE) | |
20 | 21 | define('_TVOTE_SORT',TRUE); |
21 | -# その他のフォームを表示する(TRUE)/しない(FALSE) | |
22 | +# ????????????若????茵?ず????(TRUE)鐚??????(FALSE) | |
22 | 23 | define('_TVOTE_ADD',TRUE); |
23 | -# ページを凍結すると投票は締め切る(TRUE)/継続する(FALSE) | |
24 | +# ???若?吾????腟?????????腑??????????(TRUE)鐚靛?膓?????(FALSE) | |
24 | 25 | define('_TVOTE_FREEZE_SYNC',TRUE); |
25 | -# MD5ダイジェストによる更新衝突チェックを行う(TURE)/行わない(FALSE)。 | |
26 | +# MD5???ゃ?吾?с?鴻?????????贋?域?腦????с??????茵???(TURE)鐚頫??????(FALSE)?? | |
26 | 27 | define('_TVOTE_MD5_CHECK',FALSE); |
27 | 28 | |
28 | 29 | ######################################## |
29 | -# 通常の使用では、これ以降を編集する必要はありません。 | |
30 | -#クッキー用データデリミタ | |
30 | +# ??絽吾??戎???с????????篁ラ????膩???????綽?荀????????障?????? | |
31 | +#???????主?????若?帥??????? | |
31 | 32 | define('C_DELIM','-'); |
32 | 33 | |
33 | 34 | function plugin_tvote_action() |
@@ -42,19 +43,19 @@ function plugin_tvote_action() | ||
42 | 43 | $tvote_no = -1; |
43 | 44 | $title = $body = $postdata = ''; |
44 | 45 | |
45 | - // ページデータの処理 | |
46 | + // ???若?吾???若?帥?????? | |
46 | 47 | foreach($postdata_old as $line) { |
47 | - // tvote要素があるか検索し、あれば取り出す。 | |
48 | + // tvote荀?膣?????????罎?膣≪?????????医????冴???? | |
48 | 49 | if (!preg_match("/^#tvote\((.*)\)\s*$/",$line,$arg)) { |
49 | 50 | $postdata .= $line; |
50 | 51 | continue; |
51 | 52 | } |
52 | - // POSTされたtvoteかどうか検査 | |
53 | + // POST??????tvote????????罎?? | |
53 | 54 | if (++$tvote_no != $post['tvote_no']) { |
54 | 55 | $postdata .= $line; |
55 | 56 | continue; |
56 | 57 | } |
57 | - //プラグイン引数取り出し | |
58 | + //?????違?ゃ?喝??医????冴?? | |
58 | 59 | $args = csv_explode(',', $arg[1]); |
59 | 60 | $items = null; |
60 | 61 | $tvoteflag=false; |
@@ -64,19 +65,19 @@ function plugin_tvote_action() | ||
64 | 65 | if (preg_match("/^([\da-f]{8})$/i",$key,$match)) |
65 | 66 | $votedlist[$match[1]]=1; |
66 | 67 | } |
67 | - //引数処理 | |
68 | + //綣??医???? | |
68 | 69 | foreach($args as $arg) { |
69 | 70 | $cnt = 0; |
70 | 71 | if (preg_match("/^(.+)\[([^\[]*)\]$/",$arg,$match)) { |
71 | 72 | $arg = $match[1]; |
72 | 73 | $cnt = intval($match[2]); |
73 | 74 | if (!is_int($cnt) || $cnt<0) $cnt=0; |
74 | - //引数の先頭文字が+ならはオプションとして $opt[$arg]=$cnt; | |
75 | + //綣??違????????絖???+???????????激?с?潟????? $opt[$arg]=$cnt; | |
75 | 76 | } |
76 | 77 | $e_arg = encode($arg); |
77 | 78 | if (!empty($post["tvote_$e_arg"]) and $post["tvote_$e_arg"] == $_vote_plugin_votes) { |
78 | - //投票していないかチェック | |
79 | - //初投票ならカウント&クッキーセット | |
79 | + //??腑????????????????с??? | |
80 | + //????腑??????????潟??鐚????????若?祉???? | |
80 | 81 | $hash=sprintf('%08x',crc32($arg)); |
81 | 82 | $tvoteflag=true; |
82 | 83 | if (!$votedlist[$hash]) { |
@@ -88,9 +89,9 @@ function plugin_tvote_action() | ||
88 | 89 | $items[$arg] = array($cnt,$arg); |
89 | 90 | } |
90 | 91 | } |
91 | - // その他の場合 | |
92 | + // ????????翫?? | |
92 | 93 | if ((!empty($post['add_submit']) || !$tvoteflag) && !empty($post['tvote_add'])) { |
93 | - $add = htmlspecialchars($post['tvote_add']); | |
94 | + $add = htmlsc($post['tvote_add']); | |
94 | 95 | # $trans_tbl = array ('"' => '"'); |
95 | 96 | # $add = strtr($post['tvote_add'],$trans_tbl); |
96 | 97 | $hash=sprintf('%08x',crc32($add)); |
@@ -108,23 +109,24 @@ function plugin_tvote_action() | ||
108 | 109 | $new_value=@join(C_DELIM,array_keys($votedlist)); |
109 | 110 | $_COOKIE['tvote_'.$post['refer'].'_'.$post['tvote_no']]=$new_value; |
110 | 111 | if (_TVOTE_SORT) { |
111 | - // スコア降順ソート&キー昇順ソート | |
112 | - $cmpfunc = create_function('$a, $b', 'return ($a[0]==$b[0]?strcasecmp($a[1],$b[1]):$b[0]-$a[0]);'); | |
112 | + // ?鴻?潟?∫?????純?若??鐚????惹?????純?若?? | |
113 | + //$cmpfunc = create_function('$a, $b', 'return ($a[0]==$b[0]?strcasecmp($a[1],$b[1]):$b[0]-$a[0]);'); | |
114 | + $cmpfunc = function($a, $b) {return ($a[0]==$b[0]?strcasecmp($a[1],$b[1]):$b[0]-$a[0]);}; | |
113 | 115 | uasort($items,$cmpfunc); |
114 | 116 | } |
115 | 117 | foreach ($items as $key => $value) { |
116 | 118 | $votes[] = '"'.$key.'['.$value[0].']"'; |
117 | 119 | } |
118 | - // オプション($opt[$arg]) を $votesのあとに追加; | |
120 | + // ?????激?с?鰹?$opt[$arg]鐚? ?? $votes????????申??; | |
119 | 121 | $tvote_str = '#tvote('.@join(',',$votes).")\n"; |
120 | 122 | $postdata_input = $tvote_str; |
121 | 123 | $postdata .= $tvote_str; |
122 | 124 | } |
123 | 125 | if (_TVOTE_MD5_CHECK && (md5(@join('',get_source($post['refer']))) != $post['digest'])) { |
124 | 126 | $title = $_title_collided; |
125 | - $s_refer = htmlspecialchars($post['refer']); | |
126 | - $s_digest = htmlspecialchars($post['digest']); | |
127 | - $s_postdata_input = htmlspecialchars($postdata_input); | |
127 | + $s_refer = htmlsc($post['refer']); | |
128 | + $s_digest = htmlsc($post['digest']); | |
129 | + $s_postdata_input = htmlsc($postdata_input); | |
128 | 130 | $body = <<<EOD |
129 | 131 | $_msg_collided |
130 | 132 | <form action="$script?cmd=preview" method="post"> |
@@ -154,15 +156,15 @@ function plugin_tvote_convert() | ||
154 | 156 | $style = 'padding-left:0.5em;padding-right:0.5em'; |
155 | 157 | // $vars['tvote_info_'.$tvote_no] .= "debug"; |
156 | 158 | |
157 | - // PukiWikiのバグ?対策 action時にページ名でなしで呼ばれる。 | |
159 | + // PukiWiki?????逸?絲丞? action???????若?後???с?????у?若?違?????? | |
158 | 160 | if (empty($vars['page'])) |
159 | 161 | return ''; |
160 | 162 | if (!array_key_exists($vars['page'],$numbers)) |
161 | 163 | $numbers[$vars['page']] = 0; |
162 | 164 | $tvote_no = $numbers[$vars['page']]++; |
163 | 165 | $args = func_get_args(); |
164 | - $s_page = htmlspecialchars($vars['page']); | |
165 | - $s_digest = htmlspecialchars($digest); | |
166 | + $s_page = htmlsc($vars['page']); | |
167 | + $s_digest = htmlsc($digest); | |
166 | 168 | $_votedlist=explode(C_DELIM, $_COOKIE['tvote_'.$s_page.'_'.$tvote_no]); |
167 | 169 | foreach( $_votedlist as $key ) { |
168 | 170 | if (preg_match("/^([\da-f]{8})$/i",$key,$match)) |
@@ -170,8 +172,8 @@ function plugin_tvote_convert() | ||
170 | 172 | } |
171 | 173 | $view_count=_TVOTE_OPENCOUNT || ($votedlist) || (is_freeze($vars['page']) && _TVOTE_FREEZE_SYNC); |
172 | 174 | if($view_count) { |
173 | - $votecount_head='得票数'; | |
174 | - $votepercent_head='得票率'; | |
175 | + $votecount_head='緇?腑???; | |
176 | + $votepercent_head='緇?腑??'; | |
175 | 177 | } |
176 | 178 | $body = <<<EOD |
177 | 179 | <a id="tvote$tvote_no"></a> |
@@ -201,7 +203,7 @@ EOD; | ||
201 | 203 | $cnt = intval($match[2]); |
202 | 204 | if (!is_int($cnt) || $cnt<0) $cnt=0; |
203 | 205 | $polltotal+=$cnt; |
204 | - //引数の先頭文字が+ならはオプションとして $opt[$arg]=$cnt; | |
206 | + //綣??違????????絖???+???????????激?с?潟????? $opt[$arg]=$cnt; | |
205 | 207 | } |
206 | 208 | $itemlist[$arg]=$cnt; |
207 | 209 | } |
@@ -212,7 +214,10 @@ EOD; | ||
212 | 214 | $trans_tbl = array_flip(get_html_translation_table(HTML_ENTITIES)); |
213 | 215 | $item = strtr($key, $trans_tbl); |
214 | 216 | $html = make_link($item); |
215 | - $cntp=sprintf("%.1f",$cnt*100/$polltotal).'%'; | |
217 | + if ($polltotal != 0) | |
218 | + $cntp=sprintf("%.1f",$cnt*100/$polltotal).'%'; | |
219 | + else | |
220 | + $cntp = 0 . "%"; | |
216 | 221 | if(!$view_count) { |
217 | 222 | unset($cnt); |
218 | 223 | unset($cntp); |
@@ -227,27 +232,27 @@ EOD; | ||
227 | 232 | EOD; |
228 | 233 | $hash=sprintf('%08x',crc32($key)); |
229 | 234 | $itemshash[$hash] = 1; |
230 | - // 凍結判定 | |
235 | + // ??腟??ゅ? | |
231 | 236 | if(!(is_freeze($vars['page']) && _TVOTE_FREEZE_SYNC)) { |
232 | 237 | if (!$votedlist[$hash]) |
233 | - //投票してないならボタン表示 | |
238 | + //??腑????????????????帥?活;腓 | |
234 | 239 | $body .= "<input type=\"submit\" name=\"tvote_$e_arg\" value=\"$_vote_plugin_votes\" class=\"submit\" />"; |
235 | 240 | else |
236 | - //投票済なら表示しない | |
237 | - $body .= '投票済'; | |
238 | - } //else $body .= '締切'; | |
241 | + //??腑??????茵?ず?????? | |
242 | + $body .= '??腑??'; | |
243 | + } //else $body .= '膩???'; | |
239 | 244 | $body .= '</td></tr>'; |
240 | 245 | } |
241 | -# 凍結判定 | |
246 | +# ??腟??ゅ? | |
242 | 247 | if(!(is_freeze($vars['page']) && _TVOTE_FREEZE_SYNC) && _TVOTE_ADD) { |
243 | 248 | $cls = ($tdcnt++ % 2) ? 'vote_td1' : 'vote_td2'; |
244 | 249 | $body .= <<<EOD |
245 | 250 | <tr> |
246 | - <td align="left" class="$cls" colspan="3" style="$style">その他 | |
251 | + <td align="left" class="$cls" colspan="3" style="$style">????? | |
247 | 252 | <input type="text" size="40" name="tvote_add" value="" /> |
248 | 253 | </td> |
249 | 254 | <td align="right" class="$cls" style="$style"> |
250 | -<input type="submit" name="add_submit" value="投票" class="submit" /> | |
255 | +<input type="submit" name="add_submit" value="??腑? class="submit" /> | |
251 | 256 | </td> |
252 | 257 | </tr> |
253 | 258 | EOD; |
@@ -256,7 +261,7 @@ EOD; | ||
256 | 261 | $cls = ($tdcnt++ % 2) ? 'vote_td1' : 'vote_td2'; |
257 | 262 | $body .= <<<EOD |
258 | 263 | <tr> |
259 | - <td align="left" class="$cls" style="$style">投票総数</td> | |
264 | + <td align="left" class="$cls" style="$style">??腑????/td> | |
260 | 265 | <td align="right" class="$cls" style="$style">$polltotal</td> |
261 | 266 | <td align="right" class="$cls" style="$style"></td> |
262 | 267 | <td align="right" class="$cls" style="$style"></td> |
@@ -264,13 +269,18 @@ EOD; | ||
264 | 269 | EOD; |
265 | 270 | } |
266 | 271 | $body .= '</table></form>'; |
267 | -# クッキー掃除 | |
268 | - foreach( array_keys($votedlist) as $key ) | |
269 | - if (!$itemshash[$key]) | |
270 | - unset($votedlist[$key]); | |
271 | -# クッキーセット | |
272 | - $new_value=@join(C_DELIM,array_keys($votedlist)); | |
273 | - setcookie('tvote_'.$s_page.'_'.$tvote_no,$new_value,time()+3600*24*_TVOTE_VALIDDAYS); | |
272 | +# ???????惹?? | |
273 | + if (!empty($votedlist)) { | |
274 | + foreach( array_keys($votedlist) as $key ) | |
275 | + if (!$itemshash[$key]) | |
276 | + unset($votedlist[$key]); | |
277 | + } | |
278 | +# ???????若?祉???? | |
279 | + if (!empty($votedlist)) { | |
280 | + $new_value=@join(C_DELIM,array_keys($votedlist)); | |
281 | + setcookie('tvote_'.$s_page.'_'.$tvote_no,$new_value,time()+3600*24*_TVOTE_VALIDDAYS); | |
282 | + } | |
274 | 283 | return $vars['tvote_info_'.$tvote_no].$body; |
284 | + | |
275 | 285 | } |
276 | 286 | ?> |