X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=pukiwiki.php;h=266297dceefa3d02990109364c29403a23d85c56;hb=3d70c10f518fc0e23395cfd4ecd8721e0826eb2f;hp=ecf46c67aeeb3b1da2d2a4e5535ad4e42c5e6a2b;hpb=fe9c434b2170e7bfd6f852c91c04eb769c75fb67;p=pukiwiki%2Fpukiwiki.git diff --git a/pukiwiki.php b/pukiwiki.php index ecf46c6..266297d 100644 --- a/pukiwiki.php +++ b/pukiwiki.php @@ -1,753 +1,11 @@ -// http://factage.com/sng/pukiwiki/ -// -// Special thanks -// YukiWiki by Hiroshi Yuki -// -// http://www.hyuki.com/yukiwiki/ -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// $Id: pukiwiki.php,v 1.16 2002/11/29 00:09:00 panda Exp $ -///////////////////////////////////////////////// +// PukiWiki - Yet another WikiWikiWeb clone. +// $Id: pukiwiki.php,v 1.38 2004/08/01 01:58:09 henoheno Exp $ +// Directory definition +// (Ended with a slash like '../path/to/pkwk/', or '') +define('DATA_HOME', ''); +define('LIB_DIR', 'lib/'); -///////////////////////////////////////////////// -// ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß -require("func.php"); -require("file.php"); -require("plugin.php"); -require("template.php"); -require("html.php"); -require("backup.php"); -require("rss.php"); -require('make_link.php'); - - -///////////////////////////////////////////////// -// ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß -require("init.php"); - - -///////////////////////////////////////////////// -// ¥á¥¤¥ó½èÍý - -// Plug-in action -if(!empty($vars["plugin"]) && exist_plugin_action($vars["plugin"])) -{ - $retvars = do_plugin_action($vars["plugin"]); - - $title = strip_bracket($vars["refer"]); - $page = make_search($vars["refer"]); - - if($retvars["msg"]) - { - $title = str_replace("$1",$title,$retvars["msg"]); - $page = str_replace("$1",$page,$retvars["msg"]); - } - - if(!empty($retvars["body"])) - { - $body = $retvars["body"]; - } - else - { - $cmd = "read"; - $vars["page"] = $vars["refer"]; - $body = @join("",get_source($vars["refer"])); - $body = convert_html($body); - } -} -// °ìÍ÷¤Îɽ¼¨ -else if(arg_check("list")) -{ - header_lastmod($whatsnew); - - $page = $title = $_title_list; - $body = get_list(false); -} -// ¥Õ¥¡¥¤¥ë̾°ìÍ÷¤Îɽ¼¨ -else if(arg_check("filelist")) -{ - header_lastmod($whatsnew); - - $page = $title = $_title_filelist; - $body = get_list(true); -} -// ÊÔ½¸ÉÔ²Äǽ¤Ê¥Ú¡¼¥¸¤òÊÔ½¸¤·¤è¤¦¤È¤·¤¿¤È¤­ -else if(((arg_check("add") || arg_check("edit") || arg_check("preview")) && (is_freeze($vars["page"]) || !is_editable($vars["page"]) || $vars["page"] == ""))) -{ - $body = $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_cannotedit); - $page = str_replace('$1',make_search($vars["page"]),$_title_cannotedit); - - if(is_freeze($vars["page"])) - $body .= "($_msg_unfreeze)"; -} -// Äɲà -else if(arg_check("add")) -{ - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_add); - $page = str_replace('$1',make_search($get["page"]),$_title_add); - $body = "\n"; - $body .= edit_form("",$get["page"],true); -} -// ÊÔ½¸ -else if(arg_check("edit")) -{ - $postdata = @join("",get_source($get["page"])); - if($postdata == '') { - $postdata = auto_template($get["page"]); - } - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_edit); - $page = str_replace('$1',make_search($get["page"]),$_title_edit); - $body = edit_form($postdata,$get["page"]); -} -// ¥×¥ì¥Ó¥å¡¼ -else if(arg_check("preview") || $post["preview"] || $post["template"]) -{ - if($post["template"] && page_exists($post["template_page"])) - { - $post["msg"] = @join("",get_source($post["template_page"])); - } - - $post["msg"] = preg_replace("/^#freeze\n/","",$post["msg"]); - $postdata_input = $post["msg"]; - - if($post["add"]) - { - if($post["add_top"]) - { - $postdata = $post["msg"]; - $postdata .= "\n\n"; - $postdata .= @join("",get_source($post["page"])); - } - else - { - $postdata = @join("",get_source($post["page"])); - $postdata .= "\n\n"; - $postdata .= $post["msg"]; - } - } - else - { - $postdata = $post["msg"]; - } - - $title = str_replace('$1',htmlspecialchars(strip_bracket($post["page"])),$_title_preview); - $page = str_replace('$1',make_search($post["page"]),$_title_preview); - - $body = "$_msg_preview
\n"; - if($postdata == "") $body .= "$_msg_preview_delete
\n"; - else $body .= "
\n"; - - if($postdata != "") - { - $postdata = convert_html($postdata); - - $body .= "\n" - ."\n" - ."
\n" - .$postdata - ."\n
\n"; - } - - if($post["add"]) - { - if($post["add_top"]) $checked_top = " checked=\"checked\""; - $addtag = ''; - $add_top = '$_btn_addtop'; - } - if($post["notimestamp"]) $checked_time = "checked=\"checked\""; - - $body .= "
\n" - ."
\n" - ."\n" - ."\n" - ."\n" - ."$addtag\n" - ."
\n" - ."\n" - ."\n" - ."$add_top\n" - ."$_btn_notchangetimestamp\n" - ."
\n" - ."
\n"; -} -// ½ñ¤­¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ -else if($post["write"]) -{ - $post["msg"] = preg_replace("/^#freeze\n/","",$post["msg"]); - $postdata_input = $post["msg"]; - - if($post["add"]) - { - if($post["add_top"]) - { - $postdata = $post["msg"]; - $postdata .= "\n\n"; - $postdata .= @join("",get_source($post["page"])); - } - else - { - $postdata = @join("",get_source($post["page"])); - $postdata .= "\n\n"; - $postdata .= $post["msg"]; - } - } - else - { - $postdata = $post["msg"]; - } - - $oldpagesrc = get_source($post["page"]); - if(md5(join("",$oldpagesrc)) != $post["digest"]) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($post["page"])),$_title_collided); - $page = str_replace('$1',make_search($post["page"]),$_title_collided); - $post["digest"] = md5(join("",($oldpagesrc))); - list($postdata_input,$auto) = do_update_diff(join("",$oldpagesrc),$postdata_input); - - if($auto) { - $body = $_msg_collided_auto."\n"; - } - else { - $body = $_msg_collided."\n"; - } - $body .= "
\n" - ."
\n" - ."\n" - ."\n" - ."
\n" - ."\n" - ."\n" - ."$add_top\n" - ."$_btn_notchangetimestamp\n" - ."
\n" - ."
\n"; - } - else - { - $postdata = user_rules_str($postdata); - - // º¹Ê¬¥Õ¥¡¥¤¥ë¤ÎºîÀ® - if(is_page($post["page"])) - $oldpostdata = join("",get_source($post["page"])); - else - $oldpostdata = "\n"; - if($postdata) - $diffdata = do_diff($oldpostdata,$postdata); - file_write(DIFF_DIR,$post["page"],$diffdata); - - // ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎºîÀ® - if(is_page($post["page"])) - $oldposttime = filemtime(get_filename(encode($post["page"]))); - else - $oldposttime = time(); - - // ÊÔ½¸ÆâÍƤ¬²¿¤â½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤È¥Ð¥Ã¥¯¥¢¥Ã¥×¤âºï½ü¤¹¤ë?¤·¤Ê¤¤¤Ç¤¹¤è¤Í¡£ - if(!$postdata && $del_backup) - backup_delete(BACKUP_DIR.encode($post["page"]).".txt"); - else if($do_backup && is_page($post["page"])) - make_backup(encode($post["page"]).".txt",$oldpostdata,$oldposttime); - - // ¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß - file_write(DATA_DIR,$post["page"],$postdata); - - // is_page¤Î¥­¥ã¥Ã¥·¥å¤ò¥¯¥ê¥¢¤¹¤ë¡£ - is_page($post["page"],true); - - if($postdata) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($post["page"])),$_title_updated); - $page = str_replace('$1',make_search($post["page"]),$_title_updated); - $body = convert_html($postdata); - header("Location: $script?".rawurlencode($post["page"])); - } - else - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($post["page"])),$_title_deleted); - $page = str_replace('$1',make_search($post["page"]),$_title_deleted); - $body = str_replace('$1',htmlspecialchars(strip_bracket($post["page"])),$_title_deleted); - } - } -} -// Åà·ë -else if(arg_check("freeze") && $vars["page"] && $function_freeze) -{ - if(is_freeze($vars["page"])) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_isfreezed); - $page = str_replace('$1',make_search($vars["page"]),$_title_isfreezed); - $body = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_isfreezed); - } - else if(md5($post["pass"]) == $adminpass) - { - $postdata = get_source($post["page"]); - $postdata = join("",$postdata); - $postdata = "#freeze\n".$postdata; - - file_write(DATA_DIR,$vars["page"],$postdata); - - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_freezed); - $page = str_replace('$1',make_search($vars["page"]),$_title_freezed); - $postdata = join("",get_source($vars["page"])); - $postdata = convert_html($postdata); - - $body = $postdata; - } - else - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_freeze); - $page = str_replace('$1',make_search($vars["page"]),$_title_freeze); - - $body.= "
\n"; - - if($post["pass"]) - $body .= "$_msg_invalidpass
\n"; - else - $body.= "$_msg_freezing
\n"; - - $body.= "
\n"; - $body.= "
\n"; - $body.= "\n"; - $body.= "\n"; - $body.= "\n"; - $body.= "
\n"; - $body.= "
\n"; - } -} -//Åà·ë¤Î²ò½ü -else if(arg_check("unfreeze") && $vars["page"] && $function_freeze) -{ - if(!is_freeze($vars["page"])) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_isunfreezed); - $page = str_replace('$1',make_search($vars["page"]),$_title_isunfreezed); - $body = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_isunfreezed); - } - else if(md5($post["pass"]) == $adminpass) - { - $postdata = get_source($post["page"]); - array_shift($postdata); - $postdata = join("",$postdata); - - file_write(DATA_DIR,$vars["page"],$postdata); - - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_unfreezed); - $page = str_replace('$1',make_search($vars["page"]),$_title_unfreezed); - - $postdata = join("",get_source($vars["page"])); - $postdata = convert_html($postdata); - - $body = $postdata; - } - else - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($vars["page"])),$_title_unfreeze); - $page = str_replace('$1',make_search($vars["page"]),$_title_unfreeze); - - $body.= "
\n"; - - if($post["pass"]) - $body .= "$_msg_invalidpass
\n"; - else - $body.= "$_msg_unfreezing
\n"; - - $body.= "
\n"; - $body.= "
\n"; - $body.= "\n"; - $body.= "\n"; - $body.= "\n"; - $body.= "
\n"; - $body.= "
\n"; - } -} -// º¹Ê¬¤Îɽ¼¨ -else if(arg_check("diff")) -{ - $pagename = htmlspecialchars(strip_bracket($get["page"])); - if(!is_page($get["page"])) - { - $title = htmlspecialchars($pagename); - $page = make_search($vars["page"]); - $body = $_msg_notfound; - } - else - { - $link = str_replace('$1',"$pagename",$_msg_goto); - - $body = "\n" - ."$hr\n"; - } - - if(!file_exists(DIFF_DIR.encode($get["page"]).".txt") && is_page($get["page"])) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_diff); - $page = str_replace('$1',make_search($get["page"]),$_title_diff); - - $diffdata = htmlspecialchars(join("",get_source($get["page"]))); - $body .= "
\n"
-			.$diffdata
-			."\n"
-			."
\n"; - } - else if(file_exists(DIFF_DIR.encode($get["page"]).".txt")) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_diff); - $page = str_replace('$1',make_search($get["page"]),$_title_diff); - - $diffdata = file(DIFF_DIR.encode($get["page"]).".txt"); - for ($i = 0; $i < count($diffdata); $i++) { $diffdata[$i] = htmlspecialchars($diffdata[$i]); } - $diffdata = preg_replace("/^(\-)(.*)/"," $2",$diffdata); - $diffdata = preg_replace("/^(\+)(.*)/"," $2",$diffdata); - - $body .= "
\n"
-                        .join("",$diffdata)
-			."\n"
-			."
\n"; - } -} -// ¸¡º÷ -else if(arg_check("search")) -{ - if($vars["word"]) - { - $title = $page = str_replace('$1',htmlspecialchars($vars["word"]),$_title_result); - } - else - { - $page = $title = $_title_search; - } - - if($vars["word"]) - $body = do_search($vars["word"],$vars["type"]); - else - $body = "
\n$_msg_searching"; - - if($vars["type"]=="AND" || !$vars["type"]) $and_check = "checked=\"checked\""; - else if($vars["type"]=="OR") $or_check = "checked=\"checked\""; - - $body .= "
\n" - ."
\n" - ."\n" - ."$_btn_and\n" - ."$_btn_or\n" - ." \n" - ."
\n" - ."
\n"; -} -// ¥Ð¥Ã¥¯¥¢¥Ã¥× -else if($do_backup && arg_check("backup")) -{ - if(!is_numeric($get["age"])) { - unset($get["age"]); - } - - if($get["page"] && $get["age"] && (file_exists(BACKUP_DIR.encode($get["page"]).".txt") || file_exists(BACKUP_DIR.encode($get["page"]).".gz"))) - { - $pagename = htmlspecialchars(strip_bracket($get["page"])); - $body = "\n
\n$backupdata
\n"; - } - else - { - $title = str_replace('$1',$pagename,$_title_backup)."(No.".htmlspecialchars($get["age"]).")"; - $page = str_replace('$1',make_search($get["page"]),$_title_backup)."(No.".htmlspecialchars($get["age"]).")"; - $backupdata = join("",get_backup($get["age"],encode($get["page"]).".txt")); - $backupdata = convert_html($backupdata); - $body .= "\n" - ."$hr\n"; - $body .= $backupdata; - } - - if(arg_check("backup_diff") || arg_check("backup_nowdiff")) - { - for ($i = 0; $i < count($diffdata); $i++) { $diffdata[$i] = htmlspecialchars($diffdata[$i]); } - $diffdata = preg_replace("/^(\-)(.*)/"," $2",$diffdata); - $diffdata = preg_replace("/^(\+)(.*)/"," $2",$diffdata); - - $body .= "
\n" - ."$hr\n" - ."
\n".join("\n",$diffdata)."
\n"; - } - } - else if($get["page"] && (file_exists(BACKUP_DIR.encode($get["page"]).".txt") || file_exists(BACKUP_DIR.encode($get["page"]).".gz"))) - { - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_pagebackuplist); - $page = str_replace('$1',make_search($get["page"]),$_title_pagebackuplist); - $body = get_backup_list($get["page"]); - } - else - { - $page = $title = $_title_backuplist; - $body = get_backup_list(); - } -} -// ¥Ø¥ë¥×¤Îɽ¼¨ -else if(arg_check("help")) -{ - $title = $page = "¥Ø¥ë¥×"; - $body = catrule(); -} -// MD5¥Ñ¥¹¥ï¡¼¥É¤Ø¤ÎÊÑ´¹ -else if($vars["md5"]) -{ - $title = $page = "Make password of MD5"; - $body = "$vars[md5] : ".md5($vars["md5"]); -} -else if(arg_check("rss")) -{ - if(!arg_check("rss10")) - catrss(1); - else - catrss(2); - die(); -} -// ¥Ú¡¼¥¸¤Îɽ¼¨¤ÈInterWikiName¤Î²ò¼á -else if((arg_check("read") && $vars["page"] != "") || (!arg_check("read") && $arg != "" && $vars["page"] == "")) -{ - // ¥¢¥¯¥·¥ç¥ó¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ¤¤¤Ê¤¤¾ì¹ç¥Ú¡¼¥¸Ì¾¤È¤·¤Æ²ò¼á - if($arg != "" && $vars["page"] == "" && $vars["cmd"] == "") - { - $post["page"] = $arg; - $get["page"] = $arg; - $vars["page"] = $arg; - } - - // ¥Ú¡¼¥¸Ì¾¤¬WikiName¤Ç¤Ê¤¯¡¢BracketName¤Ç¤Ê¤±¤ì¤ÐBracketName¤È¤·¤Æ²ò¼á - if(!preg_match("/^(($WikiName)|($BracketName)|($InterWikiName))$/",$get["page"])) - { - $vars["page"] = "[[".$vars["page"]."]]"; - $get["page"] = $vars["page"]; - } - - // WikiName¡¢BracketName¤¬¼¨¤¹¥Ú¡¼¥¸¤òɽ¼¨ - if(is_page($get["page"])) - { - $postdata = join("",get_source($get["page"])); - $postdata = convert_html($postdata); - - $title = htmlspecialchars(strip_bracket($get["page"])); - $page = make_search($get["page"]); - $body = $postdata; - - header_lastmod($vars["page"]); - } - else if(preg_match("/($InterWikiName)/",$get["page"],$match)) - { - // InterWikiName¤ÎȽÊ̤ȥڡ¼¥¸¤Îɽ¼¨ - $interwikis = open_interwikiname_list(); - - if(!$interwikis[$match[2]]["url"]) - { - $title = $page = $_title_invalidiwn; - $body = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),str_replace('$2',"InterWikiName",$_msg_invalidiwn)); - } - else - { - // ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥° - if($interwikis[$match[2]]["opt"] == "yw") - { - // YukiWiki·Ï - if(!preg_match("/$WikiName/",$match[3])) - $match[3] = "[[".mb_convert_encoding($match[3],"SJIS","EUC-JP")."]]"; - } - else if($interwikis[$match[2]]["opt"] == "moin") - { - // moin·Ï - if(function_exists("mb_convert_encoding")) - { - $match[3] = rawurlencode($match[3]); - $match[3] = str_replace("%","_",$match[3]); - } - else - $not_mb = 1; - } - else if($interwikis[$match[2]]["opt"] == "" || $interwikis[$match[2]]["opt"] == "std") - { - // ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¤Þ¤ÞURL¥¨¥ó¥³¡¼¥É - $match[3] = rawurlencode($match[3]); - } - else if($interwikis[$match[2]]["opt"] == "asis" || $interwikis[$match[2]]["opt"] == "raw") - { - // URL¥¨¥ó¥³¡¼¥É¤·¤Ê¤¤ - $match[3] = $match[3]; - } - else if($interwikis[$match[2]]["opt"] != "") - { - // ¥¨¥¤¥ê¥¢¥¹¤ÎÊÑ´¹ - if($interwikis[$match[2]]["opt"] == "sjis") - $interwikis[$match[2]]["opt"] = "SJIS"; - else if($interwikis[$match[2]]["opt"] == "euc") - $interwikis[$match[2]]["opt"] = "EUC-JP"; - else if($interwikis[$match[2]]["opt"] == "utf8") - $interwikis[$match[2]]["opt"] = "UTF-8"; - - // ¤½¤Î¾¡¢»ØÄꤵ¤ì¤¿Ê¸»ú¥³¡¼¥É¤Ø¥¨¥ó¥³¡¼¥É¤·¤ÆURL¥¨¥ó¥³¡¼¥É - if(function_exists("mb_convert_encoding")) - $match[3] = rawurlencode(mb_convert_encoding($match[3],$interwikis[$match[2]]["opt"],"EUC-JP")); - else - $not_mb = 1; - } - - if(strpos($interwikis[$match[2]]["url"],'$1') !== FALSE) - $url = str_replace('$1',$match[3],$interwikis[$match[2]]["url"]); - else - $url = $interwikis[$match[2]]["url"] . $match[3]; - - if($not_mb) - { - $title = $page = "Not support mb_jstring."; - $body = "This server's PHP does not have \"mb_jstring\" module.Cannot convert encoding."; - } - else - { - header("Location: $url"); - die(); - } - } - } - // WikiName¡¢BracketName¤¬¸«¤Ä¤«¤é¤º¡¢InterWikiName¤Ç¤â¤Ê¤¤¾ì¹ç - else - { - //$title = strip_bracket($get["page"]); - //$page = make_search($get["page"]); - //$body = "»ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£"; - - if(preg_match("/^(($BracketName)|($WikiName))$/",$get["page"])) { - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_edit); - $page = str_replace('$1',make_search($get["page"]),$_title_edit); - $template = auto_template($get["page"]); - $body = edit_form($template,$get["page"]); - } - else { - $title = str_replace('$1',htmlspecialchars(strip_bracket($get["page"])),$_title_invalidwn); - $body = $page = str_replace('$1',make_search($get["page"]), str_replace('$2','WikiName',$_msg_invalidiwn)); - $template = ''; - } - - } -} -// ²¿¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢¥È¥Ã¥×¥Ú¡¼¥¸¤òɽ¼¨ -else -{ - $postdata = join("",get_source($defaultpage)); - - $vars["page"] = $defaultpage; - $title = htmlspecialchars(strip_bracket($defaultpage)); - $page = make_search($vars["page"]); - $body = convert_html($postdata); - - header_lastmod($vars["page"]); -} - -// ** ½ÐÎϽèÍý ** -catbody($title,$page,$body); - -// ** ½ªÎ» ** +require(LIB_DIR . 'pukiwiki.php'); ?>