OSDN Git Service

[[pukiwiki:BugTrack/33]] BracketNameに適合してない名前のページを作れる問題を修正
[pukiwiki/pukiwiki.git] / pukiwiki.php
1 <?
2 // pukiwiki.php - Yet another WikiWikiWeb clone.
3 //
4 // PukiWiki 1.3.* MASUI'z Edition
5 //  Copyright (C) 2002 by sng, MASUI.
6 //  Yuichiro MASUI <masui@masui.net>
7 //  http://masui.net/pukiwiki/
8 //
9 // PukiWiki 1.3 (Base)
10 //  Copyright (C) 2001,2002 by sng.
11 //  <sng@factage.com>
12 //  http://factage.com/sng/pukiwiki/
13 //
14 // Special thanks
15 //  YukiWiki by Hiroshi Yuki
16 //  <hyuki@hyuki.com>
17 //  http://www.hyuki.com/yukiwiki/
18 //
19 // This program is free software; you can redistribute it and/or modify
20 // it under the terms of the GNU General Public License as published by
21 // the Free Software Foundation; either version 2 of the License, or
22 // (at your option) any later version.
23 //
24 // This program is distributed in the hope that it will be useful,
25 // but WITHOUT ANY WARRANTY; without even the implied warranty of
26 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27 // GNU General Public License for more details.
28 //
29 // $Id: pukiwiki.php,v 1.5 2002/06/28 12:47:46 masui Exp $
30 /////////////////////////////////////////////////
31
32
33 /////////////////////////////////////////////////
34 // ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß
35 require("func.php");
36 require("file.php");
37 require("plugin.php");
38 require("template.php");
39 require("html.php");
40 require("backup.php");
41 require("rss.php");
42
43
44 /////////////////////////////////////////////////
45 // ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß
46 require("init.php");
47
48
49 /////////////////////////////////////////////////
50 // ¥á¥¤¥ó½èÍý
51
52 // Plug-in action
53 if(!empty($vars["plugin"]) && exist_plugin_action($vars["plugin"]))
54 {
55         $retvars = do_plugin_action($vars["plugin"]);
56         
57         $title = strip_bracket($vars["refer"]);
58         $page = make_search($vars["refer"]);
59         
60         if($retvars["msg"])
61         {
62                 $title =  str_replace("$1",$title,$retvars["msg"]);
63                 $page =  str_replace("$1",$page,$retvars["msg"]);
64         }
65         
66         if(!empty($retvars["body"]))
67         {
68                 $body = $retvars["body"];
69         }
70         else
71         {
72                 $cmd = "read";
73                 $vars["page"] = $vars["refer"];
74                 $body = @join("",get_source($vars["refer"]));
75                 $body = convert_html($body);
76         }
77 }
78 // °ìÍ÷¤Îɽ¼¨
79 else if(arg_check("list"))
80 {
81         header_lastmod($whatsnew);
82         
83         $page = $title = $_title_list;
84         $body = "<ul>\n" . get_list(false) . "</ul>\n";
85 }
86 // ¥Õ¥¡¥¤¥ë̾°ìÍ÷¤Îɽ¼¨
87 else if(arg_check("filelist"))
88 {
89         header_lastmod($whatsnew);
90
91         $page = $title = $_title_filelist;
92         $body = "<ul>\n" . get_list(true) . "</ul>\n";
93 }
94 // ÊÔ½¸ÉÔ²Äǽ¤Ê¥Ú¡¼¥¸¤òÊÔ½¸¤·¤è¤¦¤È¤·¤¿¤È¤­
95 else if(((arg_check("add") || arg_check("edit") || arg_check("preview")) && (is_freeze($vars["page"]) || !is_editable($vars["page"]) || $vars["page"] == "")))
96 {
97         $body = $title = str_replace('$1',strip_bracket($vars["page"]),$_title_cannotedit);
98         $page = str_replace('$1',make_search($vars["page"]),$_title_cannotedit);
99
100         if(is_freeze($vars["page"]))
101                 $body .= "(<a href=\"$script?cmd=unfreeze&amp;page=".rawurlencode($vars["page"])."\">$_msg_unfreeze</a>)";
102 }
103 // ÄɲÃ
104 else if(arg_check("add"))
105 {
106         $title = str_replace('$1',strip_bracket($get["page"]),$_title_add);
107         $page = str_replace('$1',make_search($get["page"]),$_title_add);
108         $body = "<ul>\n";
109         $body .= "<li>$_msg_add</li>\n";
110         $body .= "</ul>\n";
111         $body .= edit_form("",$get["page"],true);
112 }
113 // ÊÔ½¸
114 else if(arg_check("edit"))
115 {
116         $postdata = @join("",get_source($get["page"]));
117         if($postdata == '') {
118                 $postdata = auto_template($get["page"]);
119         }  
120         $title = str_replace('$1',strip_bracket($get["page"]),$_title_edit);
121         $page = str_replace('$1',make_search($get["page"]),$_title_edit);
122         $body = edit_form($postdata,$get["page"]);
123 }
124 // ¥×¥ì¥Ó¥å¡¼
125 else if(arg_check("preview") || $post["preview"] || $post["template"])
126 {
127         if($post["template"] && page_exists($post["template_page"]))
128         {
129                 $post["msg"] = @join("",get_source($post["template_page"]));
130         }
131         
132         $post["msg"] = preg_replace("/^#freeze\n/","",$post["msg"]);
133         $postdata_input = $post["msg"];
134
135         if($post["add"])
136         {
137                 if($post["add_top"])
138                 {
139                         $postdata  = $post["msg"];
140                         $postdata .= "\n\n";
141                         $postdata .= @join("",get_source($post["page"]));
142                 }
143                 else
144                 {
145                         $postdata  = @join("",get_source($post["page"]));
146                         $postdata .= "\n\n";
147                         $postdata .= $post["msg"];
148                 }
149         }
150         else
151         {
152                 $postdata = $post["msg"];
153         }
154
155         $title = str_replace('$1',strip_bracket($post["page"]),$_title_preview);
156         $page = str_replace('$1',make_search($post["page"]),$_title_preview);
157
158         $body = "$_msg_preview<br>\n";
159         if($postdata == "") $body .= "<b>$_msg_preview_delete</b><br>\n";
160         else                $body .= "<br>\n";
161
162         if($postdata != "")
163         {
164                 $postdata = convert_html($postdata);
165                 
166                 $body .= "<table width=\"100%\" bgcolor=\"$preview_color\">\n"
167                         ."<tr><td>\n"
168                         .$postdata
169                         ."\n</td></tr>\n"
170                         ."</table>\n";
171         }
172
173         if($post["add"])
174         {
175                 if($post["add_top"]) $checked_top = " checked";
176                 $addtag = '<input type="hidden" name="add" value="true">';
177                 $add_top = '<input type="checkbox" name="add_top" value="true"'.$checked_top.'><small>¥Ú¡¼¥¸¤Î¾å¤ËÄɲÃ</small>';
178         }
179         if($post["notimestamp"]) $checked_time = "checked";
180
181         $body .= "<form action=\"$script\" method=\"post\">\n"
182                 ."<input type=\"hidden\" name=\"help\" value=\"$post[add]\">\n"
183                 ."<input type=\"hidden\" name=\"page\" value=\"".$post["page"]."\">\n"
184                 ."<input type=\"hidden\" name=\"digest\" value=\"".$post["digest"]."\">\n"
185                 ."$addtag\n"
186                 ."<textarea name=\"msg\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\">\n".htmlspecialchars($postdata_input)."</textarea><br>\n"
187                 ."<input type=\"submit\" name=\"preview\" value=\"$_btn_repreview\" accesskey=\"p\">\n"
188                 ."<input type=\"submit\" name=\"write\" value=\"$_btn_update\" accesskey=\"s\">\n"
189                 ."$add_top\n"
190                 ."<input type=\"checkbox\" name=\"notimestamp\" value=\"true\" $checked_time><small>$_btn_notchangetimestamp</small>\n"
191                 ."</form>\n";
192 }
193 // ½ñ¤­¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
194 else if($post["write"])
195 {
196         $post["msg"] = preg_replace("/^#freeze\n/","",$post["msg"]);
197         $postdata_input = $post["msg"];
198
199         if($post["add"])
200         {
201                 if($post["add_top"])
202                 {
203                         $postdata  = $post["msg"];
204                         $postdata .= "\n\n";
205                         $postdata .= @join("",get_source($post["page"]));
206                 }
207                 else
208                 {
209                         $postdata  = @join("",get_source($post["page"]));
210                         $postdata .= "\n\n";
211                         $postdata .= $post["msg"];
212                 }
213         }
214         else
215         {
216                 $postdata = $post["msg"];
217         }
218
219         $oldpagesrc = get_source($post["page"]);
220         if(md5(join("",$oldpagesrc)) != $post["digest"])
221         {
222                 $title = str_replace('$1',strip_bracket($post["page"]),$_title_collided);
223                 $page = str_replace('$1',make_search($post["page"]),$_title_collided);
224                 $post["digest"] = md5(join("",($oldpagesrc)));
225                 list($postdata_input,$auto) = do_update_diff(join("",$oldpagesrc),$postdata_input);
226                 
227                 if($auto) {
228                   $body = $_msg_collided_auto."\n";
229                 }
230                 else {
231                   $body = $_msg_collided."\n";
232                 }
233                 $body .= "<form action=\"$script\" method=\"post\">\n"
234                         ."<input type=\"hidden\" name=\"page\" value=\"".$post["page"]."\">\n"
235                         ."<input type=\"hidden\" name=\"digest\" value=\"".$post["digest"]."\">\n"
236                         ."<textarea name=\"msg\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\" id=\"textarea\">$postdata_input</textarea><br>\n"
237                         ."<input type=\"submit\" name=\"preview\" value=\"$_btn_repreview\" accesskey=\"p\">\n"
238                         ."<input type=\"submit\" name=\"write\" value=\"$_btn_update\" accesskey=\"s\">\n"
239                         ."$add_top\n"
240                         ."<input type=\"checkbox\" name=\"notimestamp\" value=\"true\" $checked_time><small>$_btn_notchangetimestamp</small>\n"
241                         ."</form>\n";
242         }
243         else
244         {
245                 $postdata = user_rules_str($postdata);
246
247                 // º¹Ê¬¥Õ¥¡¥¤¥ë¤ÎºîÀ®
248                 if(is_page($post["page"]))
249                         $oldpostdata = join("",get_source($post["page"]));
250                 else
251                         $oldpostdata = "\n";
252                 if($postdata)
253                         $diffdata = do_diff($oldpostdata,$postdata);
254                 file_write(DIFF_DIR,$post["page"],$diffdata);
255
256                 // ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎºîÀ®
257                 if(is_page($post["page"]))
258                         $oldposttime = filemtime(get_filename(encode($post["page"])));
259                 else
260                         $oldposttime = time();
261
262                 // ÊÔ½¸ÆâÍƤ¬²¿¤â½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤È¥Ð¥Ã¥¯¥¢¥Ã¥×¤âºï½ü¤¹¤ë?¤·¤Ê¤¤¤Ç¤¹¤è¤Í¡£
263                 if(!$postdata && $del_backup)
264                         backup_delete(BACKUP_DIR.encode($post["page"]).".txt");
265                 else if($do_backup && is_page($post["page"]))
266                         make_backup(encode($post["page"]).".txt",$oldpostdata,$oldposttime);
267
268                 // ¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß
269                 file_write(DATA_DIR,$post["page"],$postdata);
270
271                 // is_page¤Î¥­¥ã¥Ã¥·¥å¤ò¥¯¥ê¥¢¤¹¤ë¡£
272                 is_page($post["page"],true);
273
274                 if($postdata)
275                 {
276                         $title = str_replace('$1',strip_bracket($post["page"]),$_title_updated);
277                         $page = str_replace('$1',make_search($post["page"]),$_title_updated);
278                         $body = convert_html($postdata);
279                         header("Location: $script?".rawurlencode($post["page"]));
280                 }
281                 else
282                 {
283                         $title = str_replace('$1',strip_bracket($post["page"]),$_title_deleted);
284                         $page = str_replace('$1',make_search($post["page"]),$_title_deleted);
285                         $body = str_replace('$1',strip_bracket($post["page"]),$_title_deleted);
286                 }
287         }
288 }
289 // Åà·ë
290 else if(arg_check("freeze") && $vars["page"] && $function_freeze)
291 {
292         if(is_freeze($vars["page"]))
293         {
294                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_isfreezed);
295                 $page = str_replace('$1',make_search($vars["page"]),$_title_isfreezed);
296                 $body = str_replace('$1',strip_bracket($vars["page"]),$_title_isfreezed);
297         }
298         else if(md5($post["pass"]) == $adminpass)
299         {
300                 $postdata = get_source($post["page"]);
301                 $postdata = join("",$postdata);
302                 $postdata = "#freeze\n".$postdata;
303
304                 file_write(DATA_DIR,$vars["page"],$postdata);
305
306                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_freezed);
307                 $page = str_replace('$1',make_search($vars["page"]),$_title_freezed);
308                 $postdata = join("",get_source($vars["page"]));
309                 $postdata = convert_html($postdata);
310
311                 $body = $postdata;
312         }
313         else
314         {
315                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_freeze);
316                 $page = str_replace('$1',make_search($vars["page"]),$_title_freeze);
317
318                 $body.= "<br>\n";
319                 
320                 if($post["pass"])
321                         $body .= "<b>$_msg_invalidpass</b><br>\n";
322                 else
323                         $body.= "$_msg_freezing<br>\n";
324                 
325                 $body.= "<form action=\"$script?cmd=freeze\" method=\"post\">\n";
326                 $body.= "<input type=\"hidden\" name=\"page\" value=\"$vars[page]\">\n";
327                 $body.= "<input type=\"password\" name=\"pass\" size=\"12\">\n";
328                 $body.= "<input type=\"submit\" name=\"ok\" value=\"$_btn_freeze\">\n";
329                 $body.= "</form>\n";
330         }
331 }
332 //Åà·ë¤Î²ò½ü
333 else if(arg_check("unfreeze") && $vars["page"] && $function_freeze)
334 {
335         if(!is_freeze($vars["page"]))
336         {
337                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_isunfreezed);
338                 $page = str_replace('$1',make_search($vars["page"]),$_title_isunfreezed);
339                 $body = str_replace('$1',strip_bracket($vars["page"]),$_title_isunfreezed);
340         }
341         else if(md5($post["pass"]) == $adminpass)
342         {
343                 $postdata = get_source($post["page"]);
344                 array_shift($postdata);
345                 $postdata = join("",$postdata);
346
347                 file_write(DATA_DIR,$vars["page"],$postdata);
348
349                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_unfreezed);
350                 $page = str_replace('$1',make_search($vars["page"]),$_title_unfreezed);
351                 
352                 $postdata = join("",get_source($vars["page"]));
353                 $postdata = convert_html($postdata);
354                 
355                 $body = $postdata;
356         }
357         else
358         {
359                 $title = str_replace('$1',strip_bracket($vars["page"]),$_title_unfreeze);
360                 $page = str_replace('$1',make_search($vars["page"]),$_title_unfreeze);
361
362                 $body.= "<br>\n";
363
364                 if($post["pass"])
365                         $body .= "<b>$_msg_invalidpass</b><br>\n";
366                 else
367                         $body.= "$_msg_unfreezing<br>\n";
368
369                 $body.= "<form action=\"$script?cmd=unfreeze\" method=\"post\">\n";
370                 $body.= "<input type=\"hidden\" name=\"page\" value=\"$vars[page]\">\n";
371                 $body.= "<input type=\"password\" name=\"pass\" size=\"12\">\n";
372                 $body.= "<input type=\"submit\" name=\"ok\" value=\"$_btn_unfreeze\">\n";
373                 $body.= "</form>\n";
374         }
375 }
376 // º¹Ê¬¤Îɽ¼¨
377 else if(arg_check("diff"))
378 {
379         $pagename = strip_bracket($get["page"]);
380         if(!is_page($get["page"]))
381         {
382                 $title = $pagename;
383                 $page = make_search($vars["page"]);
384                 $body = "»ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£";
385         }
386         else
387         {
388                 $link = str_replace('$1',"<a href=\"$script?".rawurlencode($get["page"])."\">$pagename</a>",$_msg_goto);
389                 
390                 $body =  "<ul>\n"
391                         ."<li>$_msg_addline</li>\n"
392                         ."<li>$_msg_delline</li>\n"
393                         ."<li>$link</li>\n"
394                         ."</ul>\n"
395                         ."$hr\n";
396         }
397
398         if(!file_exists(DIFF_DIR.encode($get["page"]).".txt") && is_page($get["page"]))
399         {
400                 $title = str_replace('$1',strip_bracket($get["page"]),$_title_diff);
401                 $page = str_replace('$1',make_search($get["page"]),$_title_diff);
402
403                 $diffdata = htmlspecialchars(join("",get_source($get["page"])));
404                 $body .= "<font color=\"blue\">\n"
405                         ."<pre>\n"
406                         .$diffdata
407                         ."\n"
408                         ."</pre>\n"
409                         ."</font>\n";
410         }
411         else if(file_exists(DIFF_DIR.encode($get["page"]).".txt"))
412         {
413                 $title = str_replace('$1',strip_bracket($get["page"]),$_title_diff);
414                 $page = str_replace('$1',make_search($get["page"]),$_title_diff);
415
416                 $diffdata = file(DIFF_DIR.encode($get["page"]).".txt");
417                 $diffdata = preg_replace("/&/","&amp;",$diffdata);
418                 $diffdata = preg_replace("/</","&lt;",$diffdata);
419                 $diffdata = preg_replace("/>/","&gt;",$diffdata);
420                 $diffdata = preg_replace("/^(\-)(.*)/","<font color=\"red\"> $2</font>",$diffdata);
421                 $diffdata = preg_replace("/^(\+)(.*)/","<font color=\"blue\"> $2</font>",$diffdata);
422                 
423                 $body .= "<pre>\n"
424                         .join("",$diffdata)
425                         ."\n"
426                         ."</pre>\n";
427         }
428 }
429 // ¸¡º÷
430 else if(arg_check("search"))
431 {
432         if($vars["word"])
433         {
434                 $title = $page = str_replace('$1',htmlspecialchars($vars["word"]),$_title_result);
435         }
436         else
437         {
438                 $page = $title = $_title_search;
439         }
440
441         if($vars["word"])
442                 $body = do_search($vars["word"],$vars["type"]);
443         else
444                 $body = "<br>\n$_msg_searching";
445
446         if($vars["type"]=="AND" || !$vars["type"]) $and_check = "checked";
447         else if($vars["type"]=="OR")               $or_check = "checked";
448
449         $body .= "<form action=\"$script?cmd=search\" method=\"post\">\n"
450                 ."<input type=\"text\" name=\"word\" size=\"20\" value=\"".htmlspecialchars($vars["word"])."\">\n"
451                 ."<input type=\"radio\" name=\"type\" value=\"AND\" $and_check>$_btn_and\n"
452                 ."<input type=\"radio\" name=\"type\" value=\"OR\" $or_check>$_btn_or\n"
453                 ."&nbsp;<input type=\"submit\" value=\"$_btn_search\">\n"
454                 ."</form>\n";
455 }
456 // ¥Ð¥Ã¥¯¥¢¥Ã¥×
457 else if($do_backup && arg_check("backup"))
458 {
459         if($get["page"] && $get["age"] && (file_exists(BACKUP_DIR.encode($get["page"]).".txt") || file_exists(BACKUP_DIR.encode($get["page"]).".gz")))
460         {
461                 $pagename = strip_bracket($get["page"]);
462                 $body =  "<ul>\n";
463
464                 $body .= "<li><a href=\"$script?cmd=backup\">$_msg_backuplist</a></li>\n";
465
466                 if(!arg_check("backup_diff") && is_page($get["page"]))
467                 {
468                         $link = str_replace('$1',"<a href=\"$script?cmd=backup_diff&amp;page=".rawurlencode($get["page"])."&amp;age=$get[age]\">$_msg_diff</a>",$_msg_view);
469                         $body .= "<li>$link</li>\n";
470                 }
471                 if(!arg_check("backup_nowdiff") && is_page($get["page"]))
472                 {
473                         $link = str_replace('$1',"<a href=\"$script?cmd=backup_nowdiff&amp;page=".rawurlencode($get["page"])."&amp;age=$get[age]\">$_msg_nowdiff</a>",$_msg_view);
474                         $body .= "<li>$link</li>\n";
475                 }
476                 if(!arg_check("backup_source"))
477                 {
478                         $link = str_replace('$1',"<a href=\"$script?cmd=backup_source&amp;page=".rawurlencode($get["page"])."&amp;age=$get[age]\">$_msg_source</a>",$_msg_view);
479                         $body .= "<li>$link</li>\n";
480                 }
481                 if(arg_check("backup_diff") || arg_check("backup_source") || arg_check("backup_nowdiff"))
482                 {
483                         $link = str_replace('$1',"<a href=\"$script?cmd=backup&amp;page=".rawurlencode($get["page"])."&amp;age=$get[age]\">$_msg_backup</a>",$_msg_view);
484                         $body .= "<li>$link</li>\n";
485                 }
486                 
487                 if(is_page($get["page"]))
488                 {
489                         $link = str_replace('$1',"<a href=\"$script?".rawurlencode($get["page"])."\">$pagename</a>",$_msg_goto);
490                         $body .=  "<li>$link</li>\n";
491                 }
492                 else
493                 {
494                         $link = str_replace('$1',$pagename,$_msg_deleleted);
495                         $body .=  "<li>$link</li>\n";
496                 }
497
498                 $backups = array();
499                 $backups = get_backup_info(encode($get["page"]).".txt");
500                 if(count($backups)) $body .= "<ul>\n";
501                 foreach($backups as $key => $val)
502                 {
503                         $ins_date = date($date_format,$val);
504                         $ins_time = date($time_format,$val);
505                         $ins_week = "(".$weeklabels[date("w",$val)].")";
506                         $backupdate = "($ins_date $ins_week $ins_time)";
507                         if($key != $get["age"])
508                                 $body .= "<li><a href=\"$script?cmd=$get[cmd]&amp;page=".rawurlencode($get["page"])."&amp;age=$key\">$key $backupdate</a></li>\n";
509                         else
510                                 $body .= "<li><i>$key $backupdate</i></li>\n";
511                 }
512                 if(count($backups)) $body .= "</ul>\n";
513                 
514                 if(arg_check("backup_diff"))
515                 {
516                         $title = str_replace('$1',$pagename,$_title_backupdiff)."(No.$get[age])";
517                         $page = str_replace('$1',make_search($get["page"]),$_title_backupdiff)."(No.$get[age])";
518                         
519                         $backupdata = htmlspecialchars(@join("",get_backup($get[age]-1,encode($get["page"]).".txt")));
520                         $postdata = @join("",get_backup($get[age],encode($get["page"]).".txt"));
521                         $diffdata = split("\n",do_diff($backupdata,$postdata));
522                 }
523                 else if(arg_check("backup_nowdiff"))
524                 {
525                         $title = str_replace('$1',$pagename,$_title_backupnowdiff)."(No.$get[age])";
526                         $page = str_replace('$1',make_search($get["page"]),$_title_backupnowdiff)."(No.$get[age])";
527                         
528                         $backupdata = htmlspecialchars(@join("",get_backup($get[age],encode($get["page"]).".txt")));
529                         $postdata = @join("",get_source($get["page"]));
530                         $diffdata = split("\n",do_diff($backupdata,$postdata));
531                 }
532                 else if(arg_check("backup_source"))
533                 {
534                         $title = str_replace('$1',$pagename,$_title_backupsource)."(No.$get[age])";
535                         $page = str_replace('$1',make_search($get["page"]),$_title_backupsource)."(No.$get[age])";
536                         $backupdata = htmlspecialchars(join("",get_backup($get[age],encode($get["page"]).".txt")));
537                         
538                         $body.="</ul>\n<pre>\n$backupdata</pre>\n";
539                 }
540                 else
541                 {
542                         $pagename = strip_bracket($get["page"]);
543                         $title = str_replace('$1',$pagename,$_title_backup)."(No.$get[age])";
544                         $page = str_replace('$1',make_search($get["page"]),$_title_backup)."(No.$get[age])";
545                         $backupdata = join("",get_backup($get[age],encode($get["page"]).".txt"));
546                         $backupdata = convert_html($backupdata);
547                         $body .= "</ul>\n"
548                                 ."$hr\n";
549                         $body .= $backupdata;
550                 }
551                 
552                 if(arg_check("backup_diff") || arg_check("backup_nowdiff"))
553                 {
554                         $diffdata = preg_replace("/</","&lt;",$diffdata);
555                         $diffdata = preg_replace("/>/","&gt;",$diffdata);
556                         $diffdata = preg_replace("/^(\-)(.*)/","<font color=\"red\"> $2</font>",$diffdata);
557                         $diffdata = preg_replace("/^(\+)(.*)/","<font color=\"blue\"> $2</font>",$diffdata);
558
559                         $body .= "<br>\n"
560                                 ."<li>$_msg_addline</li>\n"
561                                 ."<li>$_msg_delline</li>\n"
562                                 ."</ul>\n"
563                                 ."$hr\n"
564                                 ."<pre>\n".join("\n",$diffdata)."</pre>\n";
565                 }
566         }
567         else if($get["page"] && (file_exists(BACKUP_DIR.encode($get["page"]).".txt") || file_exists(BACKUP_DIR.encode($get["page"]).".gz")))
568         {
569                 $title = str_replace('$1',strip_bracket($get["page"]),$_title_pagebackuplist);
570                 $page = str_replace('$1',make_search($get["page"]),$_title_pagebackuplist);
571                 $body = get_backup_list($get["page"]);
572         }
573         else
574         {
575                 $page = $title = $_title_backuplist;
576                 $body = get_backup_list();
577         }
578 }
579 // ¥Ø¥ë¥×¤Îɽ¼¨
580 else if(arg_check("help"))
581 {
582         $title = $page = "¥Ø¥ë¥×";
583         $body = catrule();
584 }
585 // MD5¥Ñ¥¹¥ï¡¼¥É¤Ø¤ÎÊÑ´¹
586 else if($vars["md5"])
587 {
588         $title = $page = "Make password of MD5";
589         $body = "$vars[md5] : ".md5($vars["md5"]);
590 }
591 else if(arg_check("rss"))
592 {
593         if(!arg_check("rss10"))
594                 catrss(1);
595         else
596                 catrss(2);
597         die();
598 }
599 // ¥Ú¡¼¥¸¤Îɽ¼¨¤ÈInterWikiName¤Î²ò¼á
600 else if((arg_check("read") && $vars["page"] != "") || (!arg_check("read") && $arg != "" && $vars["page"] == ""))
601 {
602         // ¥¢¥¯¥·¥ç¥ó¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ¤¤¤Ê¤¤¾ì¹ç¥Ú¡¼¥¸Ì¾¤È¤·¤Æ²ò¼á
603         if($arg != "" && $vars["page"] == "" && $vars["cmd"] == "")
604         {
605                 $post["page"] = $arg;
606                 $get["page"] = $arg;
607                 $vars["page"] = $arg;
608         }
609         
610         // ¥Ú¡¼¥¸Ì¾¤¬WikiName¤Ç¤Ê¤¯¡¢BracketName¤Ç¤Ê¤±¤ì¤ÐBracketName¤È¤·¤Æ²ò¼á
611         if(!preg_match("/^(($WikiName)|($BracketName)|($InterWikiName))$/",$get["page"]))
612         {
613                 $vars["page"] = "[[$vars[page]]]";
614                 $get["page"] = $vars["page"];
615         }
616
617         // WikiName¡¢BracketName¤¬¼¨¤¹¥Ú¡¼¥¸¤òɽ¼¨
618         if(is_page($get["page"]))
619         {
620                 $postdata = join("",get_source($get["page"]));
621                 $postdata = convert_html($postdata);
622
623                 $title = strip_bracket($get["page"]);
624                 $page = make_search($get["page"]);
625                 $body = $postdata;
626
627                 header_lastmod($vars["page"]);
628         }
629         else if(preg_match("/($InterWikiName)/",$get["page"],$match))
630         {
631         // InterWikiName¤ÎȽÊ̤ȥڡ¼¥¸¤Îɽ¼¨
632                 $interwikis = open_interwikiname_list();
633                 
634                 if(!$interwikis[$match[2]]["url"])
635                 {
636                         $title = $page = $_title_invalidiwn;
637                         $body = str_replace('$1',strip_bracket($get[page]),str_replace('$2',"<a href=\"$script?InterWikiName\">InterWikiName</a>",$_msg_invalidiwn));
638                 }
639                 else
640                 {
641                         // Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
642                         if($interwikis[$match[2]]["opt"] == "yw")
643                         {
644                                 // YukiWiki·Ï
645                                 if(!preg_match("/$WikiName/",$match[3]))
646                                         $match[3] = "[[".mb_convert_encoding($match[3],"SJIS","auto")."]]";
647                         }
648                         else if($interwikis[$match[2]]["opt"] == "moin")
649                         {
650                                 // moin·Ï
651                                 if(function_exists("mb_convert_encoding"))
652                                 {
653                                         $match[3] = rawurlencode(mb_convert_encoding($match[3],"EUC-JP","auto"));
654                                         $match[3] = str_replace("%","_",$match[3]);
655                                 }
656                                 else
657                                         $not_mb = 1;
658                         }
659                         else if($interwikis[$match[2]]["opt"] == "" || $interwikis[$match[2]]["opt"] == "std")
660                         {
661                                 // ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¤Þ¤ÞURL¥¨¥ó¥³¡¼¥É
662                                 $match[3] = rawurlencode($match[3]);
663                         }
664                         else if($interwikis[$match[2]]["opt"] == "asis" || $interwikis[$match[2]]["opt"] == "raw")
665                         {
666                                 // URL¥¨¥ó¥³¡¼¥É¤·¤Ê¤¤
667                                 $match[3] = $match[3];
668                         }
669                         else if($interwikis[$match[2]]["opt"] != "")
670                         {
671                                 // ¥¨¥¤¥ê¥¢¥¹¤ÎÊÑ´¹
672                                 if($interwikis[$match[2]]["opt"] == "sjis")
673                                         $interwikis[$match[2]]["opt"] = "SJIS";
674                                 else if($interwikis[$match[2]]["opt"] == "euc")
675                                         $interwikis[$match[2]]["opt"] = "EUC-JP";
676                                 else if($interwikis[$match[2]]["opt"] == "utf8")
677                                         $interwikis[$match[2]]["opt"] = "UTF-8";
678
679                                 // ¤½¤Î¾¡¢»ØÄꤵ¤ì¤¿Ê¸»ú¥³¡¼¥É¤Ø¥¨¥ó¥³¡¼¥É¤·¤ÆURL¥¨¥ó¥³¡¼¥É
680                                 if(function_exists("mb_convert_encoding"))
681                                         $match[3] = rawurlencode(mb_convert_encoding($match[3],$interwikis[$match[2]]["opt"],"auto"));
682                                 else
683                                         $not_mb = 1;
684                         }
685
686                         if(strpos($interwikis[$match[2]]["url"],'$1') !== FALSE)
687                                 $url = str_replace('$1',$match[3],$interwikis[$match[2]]["url"]);
688                         else
689                                 $url = $interwikis[$match[2]]["url"] . $match[3];
690
691                         if($not_mb)
692                         {
693                                 $title = $page = "Not support mb_jstring.";
694                                 $body = "This server's PHP does not have \"mb_jstring\" module.Cannot convert encoding.";
695                         }
696                         else
697                         {
698                                 header("Location: $url");
699                                 die();
700                         }
701                 }
702         }
703         // WikiName¡¢BracketName¤¬¸«¤Ä¤«¤é¤º¡¢InterWikiName¤Ç¤â¤Ê¤¤¾ì¹ç
704         else
705         {
706                 //$title = strip_bracket($get["page"]);
707                 //$page = make_search($get["page"]);
708                 //$body = "»ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£";
709
710                 if(preg_match("/^(($BracketName)|($WikiName))$/",$get["page"])) {
711                         $title = str_replace('$1',strip_bracket($get["page"]),$_title_edit);
712                         $page = str_replace('$1',make_search($get["page"]),$_title_edit);
713                         $template = auto_template($get["page"]);
714                         $body = edit_form($template,$get["page"]);
715                 }
716                 else {
717                         $title = str_replace('$1',strip_bracket($get["page"]),$_title_invalidwn);
718                         $body = $page = str_replace('$1',make_search($get["page"]), str_replace('$2','WikiName',$_msg_invalidiwn));
719                         $template = '';
720                 }
721           
722         }
723 }
724 // ²¿¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢¥È¥Ã¥×¥Ú¡¼¥¸¤òɽ¼¨
725 else
726 {
727         $postdata = join("",get_source($defaultpage));
728
729         $vars["page"] = $defaultpage;
730         $title = strip_bracket($defaultpage);
731         $page = make_search($vars["page"]);
732         $body = convert_html($postdata);
733
734         header_lastmod($vars["page"]);
735 }
736
737 // ** ½ÐÎϽèÍý **
738 catbody($title,$page,$body);
739
740 // ** ½ªÎ» **
741 ?>