From: Mutwin K. <mu...@us...> - 2004-11-07 12:01:16
|
Update of /cvsroot/fuwiki/fuwiki_1_0 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30690 Modified Files: functions.inc index.php io.mysql.inc parser.inc stats.inc Log Message: nearing rc2 Index: parser.inc =================================================================== RCS file: /cvsroot/fuwiki/fuwiki_1_0/parser.inc,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** parser.inc 16 Oct 2004 15:55:32 -0000 1.4 --- parser.inc 7 Nov 2004 12:00:33 -0000 1.5 *************** *** 53,57 **** { if(preg_match("/^#/", $str)) ! $str = utf8_decode(_PAGENAME).$str; if(preg_match("/([^\|]*)\|(.*)/", $str, $out)) { $url = $out[1]; --- 53,57 ---- { if(preg_match("/^#/", $str)) ! $str = _PAGENAME.$str; if(preg_match("/([^\|]*)\|(.*)/", $str, $out)) { $url = $out[1]; *************** *** 64,73 **** } - function parse_lists_callback($str) - { - $str = preg_replace("/\*([^\n]*)(\n?)/", "<li>\\1</li>\\2\r", $str, -1); - return "<ul class=\"WikiUL\">\r".$str."</ul>\r"; - } - function parse_tables_callback($str) { --- 64,67 ---- *************** *** 91,95 **** if(preg_match("/^https?:\/\//", $str)) return "<img src=\"". $str ."\" alt=\"[image]\" />"; ! return "<img src=\"upload/". _PAGENAME ."_". $str ."\" alt=\"[image]\" />"; } --- 85,89 ---- if(preg_match("/^https?:\/\//", $str)) return "<img src=\"". $str ."\" alt=\"[image]\" />"; ! return "<img src=\"".get_image_url($str)."\" alt=\"[image]\" />"; } *************** *** 104,114 **** function parse_comments_callback($str, $arguments="") { ! global $comment_num; $action = _COMMENT_DEFAULT; $timestamp = ""; $comment_num++; $arguments = stripslashes(stripslashes($arguments)); ! if(preg_match("/action=\\?"(.*)\\?"/U", $arguments, $o) || preg_match("/action=\"(.*)\"/U", $arguments, $o)) ! $action = $o[1]; if(preg_match("/timestamp=(.*)$/", $arguments, $o)) $timestamp = $o[1]; --- 98,108 ---- function parse_comments_callback($str, $arguments="") { ! global $comment_num, $WikiParser; $action = _COMMENT_DEFAULT; $timestamp = ""; $comment_num++; $arguments = stripslashes(stripslashes($arguments)); ! if(preg_match("/action=\"(.*)\"/", $arguments, $o)) ! $action = $WikiParser->parse_comment_action($o[1]); if(preg_match("/timestamp=(.*)$/", $arguments, $o)) $timestamp = $o[1]; *************** *** 169,172 **** --- 163,173 ---- $str = $pre_str."[cmtend]"; } + if($n == 4) { + $pre_str = ""; + while(preg_match("/^(.*)(\[\/comment\])(.*)$/s", $str, $o)) { + $str = $o[3]; $pre_str .= $o[1].$o[2]; + } + $str = $pre_str."[nocomment]".$str."[/nocomment]"; + } return $str; } *************** *** 192,210 **** function parse_showpage_callback($str) { ! return show($str, false, true); } ! function parse_paragraphs_callback($str, $str2) { ! if(preg_match("/\[\/comment\][ \n]*$/", $str)) { ! $str = preg_replace("/\[\/comment\]([ \n]*)$/", "\\1", $str, 1); ! $str2 = "[/comment]".$str2; ! } ! $out = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r<tr>"; ! $out .= "<td><img src=\"files/empty.gif\" width=\"40\" height=\"1\" alt=\" \"></td>"; ! $out .= "<td>".preg_replace("/(\n|^):/", "\\1", $str)."</td>"; $out .= "</tr>\r</table>\r"; ! return $out.$str2; } --- 193,207 ---- function parse_showpage_callback($str) { ! return preg_replace("/\n/", "", show($str, true, true), -1); } ! function parse_paragraphs_callback($str, $option) { ! $out = "\r<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r<tr>"; ! $out .= "<td><img src=\"files/empty.gif\" width=\"".(strlen($option)*20)."\" height=\"1\" alt=\" \" /></td>"; ! $out .= "<td>".$str."</td>"; $out .= "</tr>\r</table>\r"; ! return $out; } *************** *** 216,220 **** } $str = preg_replace("/(^|\n)\+/", "\\1", $str, -1); ! $out ="<table cellpadding=\"4\" cellspacing=\"0\" width=\"98%\" class=\"WikiQuote\">\r"; $out .= "<tr><td class=\"WikiQuoteHeader\">". _PARSERQUOTE ."</td></tr><tr><td valign=\"top\" class=\"WikiQuoteBody\">".$str."</td></tr>\r</table>\r"; --- 213,217 ---- } $str = preg_replace("/(^|\n)\+/", "\\1", $str, -1); ! $out ="\r<table cellpadding=\"4\" cellspacing=\"0\" width=\"98%\" class=\"WikiQuote\">\r"; $out .= "<tr><td class=\"WikiQuoteHeader\">". _PARSERQUOTE ."</td></tr><tr><td valign=\"top\" class=\"WikiQuoteBody\">".$str."</td></tr>\r</table>\r"; *************** *** 222,238 **** } ! function parse_newsletterquotes_callback($str, $str2) { ! if(preg_match("/\[\/comment\][ \n]*$/", $str)) { ! $str = preg_replace("/\[\/comment\]([ \n]*)$/", "\\1", $str, 1); ! $str2 = "[/comment]".$str2; ! } ! $str = preg_replace("/(^|\n)>/", "\\1", $str, -1); ! $out = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r"; ! $out .= "<tr><td style=\"width:25px; background-image:url('files/newsletter_quote.gif'); background-repeat:repeat-y;\">"; ! $out .= "<img src=\"files/newsletter_quote.gif\" width=\"25\" height=\"1\" alt=\">\" /></td>"; $out .= "<td valign=\"top\">".ltrim($str)."</td></tr>\r</table>\r"; ! return $out.$str2; } --- 219,236 ---- } ! ! function parse_lists_callback($str) { ! return "<ul class=\"WikiUL\" style=\"margin:0px; margin-left:15px; padding:0px;\">\r<li>".$str."</li></ul>\r"; ! } ! ! function parse_newsletterquotes_callback($str, $option) ! { ! $out = "\r<table style=\"margin:0px; padding:0px;\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r"; ! $out .= "<tr><td style=\"width:".(strlen($option)*25)."px; background-image:url('files/newsletter_quote.gif'); background-repeat:repeat;\">"; ! $out .= "</td>"; $out .= "<td valign=\"top\">".ltrim($str)."</td></tr>\r</table>\r"; ! return $out; } *************** *** 283,287 **** class FWikiParser { ! var $show_comments; function compare($str1, $str2) --- 281,285 ---- class FWikiParser { ! var $show_comments, $html_caching; function compare($str1, $str2) *************** *** 305,309 **** $str = preg_replace("/(\n)([0123456789][^\n]*)/", "\\1[/change][change]\\2", $str, -1); $str = preg_replace("/$/", "[/change]", $str, 1); ! $str = preg_replace("/\[change\](.*)\[\/change\]/Use", "compare_callback('\\1')", $str, -1); $str = preg_replace("/\n/", "<br />", $str, -1); --- 303,307 ---- $str = preg_replace("/(\n)([0123456789][^\n]*)/", "\\1[/change][change]\\2", $str, -1); $str = preg_replace("/$/", "[/change]", $str, 1); ! $str = preg_replace("/\[change\](.*)\[\/change\]/Use", "compare_callback('\\1')", $str, -1); $str = preg_replace("/\n/", "<br />", $str, -1); *************** *** 314,322 **** } ! function parse($string, $isMain=false) { global $nowiki_cache, $nocomment_cache, $comment_num, $WikiUser; ! $this->show_comments = $isMain; $nowiki_cache = array(); $nocomment_cache = array(); $string = preg_replace("/\r\n/", "\n", $string, -1); $string = preg_replace("/\n\r/", "\n", $string, -1); --- 312,321 ---- } ! function parse($string, $isMain=false, $html_caching=false) { global $nowiki_cache, $nocomment_cache, $comment_num, $WikiUser; ! $this->show_comments = $isMain; $this->html_caching = $html_caching; $nowiki_cache = array(); $nocomment_cache = array(); + //$string = decode_utf8($string); $string = preg_replace("/\r\n/", "\n", $string, -1); $string = preg_replace("/\n\r/", "\n", $string, -1); *************** *** 324,331 **** $string = stripslashes($string); $string = preg_replace("/\\\"/", "\"", $string, -1); $string = $this->extract_nowiki($string); ! $string = htmlentities($string, ENT_NOQUOTES); $string = $this->pre_parse($string); ! if(!$this->show_comments || !$WikiUser->get_setting("show_comments") || (!preg_match("/\[\/comment\]/", $string) && !preg_match("/--/", $string))) { $string = $this->parse_in_nocomments($string); } else { --- 323,334 ---- $string = stripslashes($string); $string = preg_replace("/\\\"/", "\"", $string, -1); + $string = preg_replace("/&(?!#|euro;)/", "&", $string, -1); $string = $this->extract_nowiki($string); ! $string = preg_replace("/</", "<", $string, -1); ! $string = preg_replace("/(?!^|\n)>/", ">", $string, -1); ! foreach($nowiki_cache as $key => $v) ! $nowiki_cache[$key] = htmlentities($v, ENT_NOQUOTES, "UTF-8"); $string = $this->pre_parse($string); ! if(!$this->show_comments || (!$html_caching && !$WikiUser->get_setting("show_comments")) || (!preg_match("/\[\/comment\]/", $string) && !preg_match("/--/", $string))) { $string = $this->parse_in_nocomments($string); } else { *************** *** 355,358 **** --- 358,373 ---- } + function parse_html_cache($string) + { + $string = $this->parse_votes($string); + return $string; + } + + function parse_comment_action($string) + { + $string = $this->parse_formatting($string); + return $string; + } + function parse_private_message($string) { *************** *** 392,396 **** $string = $this->parse_code($string); $string = $this->parse_links($string); - $string = $this->parse_lists($string); $string = $this->parse_tables($string); $string = $this->parse_images($string); --- 407,410 ---- *************** *** 399,402 **** --- 413,417 ---- $string = $this->parse_paragraphs($string); $string = $this->parse_newsletterquotes($string); + $string = $this->parse_lists($string); $string = $this->parse_hr($string); $string = $this->parse_showpage($string); *************** *** 455,459 **** $string = preg_replace("/\[img-placeholder\]/e", "insert_callback(\$a3)", $string, -1); $string = preg_replace("/([^@\n ]+@[^\. @\n]+\.[^ @\n]+)(?= |\n)/", "[url \\1]mailto:\\1[/url]", $string, -1); ! //$string = preg_replace("/\[comment([^\]]*)\](.*)\n/", "[comment\\1]\n\\2", $string, -1); return $string; --- 470,474 ---- $string = preg_replace("/\[img-placeholder\]/e", "insert_callback(\$a3)", $string, -1); $string = preg_replace("/([^@\n ]+@[^\. @\n]+\.[^ @\n]+)(?= |\n)/", "[url \\1]mailto:\\1[/url]", $string, -1); ! $string = preg_replace("/(\n[^:>\*\n]*)(?=\n[:>\*])/", "\\1\n", $string, -1); //$string = preg_replace("/\[comment([^\]]*)\](.*)\n/", "[comment\\1]\n\\2", $string, -1); return $string; *************** *** 463,467 **** { global $nowiki_cache; ! $string = preg_replace("/<nowiki>(.*)<\/nowiki>/Use", "extract_callback(\$nowiki_cache, '\\1', '[nowiki-placeholder]')", $string, -1); return $string; } --- 478,482 ---- { global $nowiki_cache; ! $string = preg_replace("/<nowiki>(.*)<\/nowiki>/Use", "extract_callback(\$nowiki_cache, '\\1', '{nowiki-placeholder}')", $string, -1); return $string; } *************** *** 470,474 **** { global $nowiki_cache; ! $string = preg_replace("/\[nowiki-placeholder\]/e", "insert_callback(\$nowiki_cache)", $string, -1); return $string; } --- 485,489 ---- { global $nowiki_cache; ! $string = preg_replace("/\{nowiki-placeholder\}/e", "insert_callback(\$nowiki_cache)", $string, -1); return $string; } *************** *** 499,504 **** $string = preg_replace("/\[\[FWikiUser\]\]/i", "<a href=\"index.php?FWikiUser\">". _PARSERREGISTER ."</a>", $string); } ! $string = preg_replace("/\[\[FWikiEdit\]\]/", "<a href=\"index.php?".utf8_decode(_PAGENAME)."&edit=1&v=".(_REVNUM != 0 ? _REVNUM : 0)."\">"._PARSEREDIT."</a>", $string, -1); ! $string = preg_replace("/\[\[FWikiEdit\|([^\]]*)\]\]/", "<a href=\"index.php?".utf8_decode(_PAGENAME)."&edit=1&v=".(_REVNUM != 0 ? _REVNUM : 0)."\">\\1</a>", $string, -1); $string = preg_replace("/\[\[([^\]]*)\]\]/e", "parse_links_callback('\\1')", $string, -1); $string = preg_replace("/\[a #([^\]]*)\]/", "<a name=\"\\1\"></a>", $string, -1); --- 514,519 ---- $string = preg_replace("/\[\[FWikiUser\]\]/i", "<a href=\"index.php?FWikiUser\">". _PARSERREGISTER ."</a>", $string); } ! $string = preg_replace("/\[\[FWikiEdit\]\]/", "<a href=\"index.php?"._PAGENAME."&edit=1&v=".(_REVNUM != 0 ? _REVNUM : 0)."\">"._PARSEREDIT."</a>", $string, -1); ! $string = preg_replace("/\[\[FWikiEdit\|([^\]]*)\]\]/", "<a href=\"index.php?"._PAGENAME."&edit=1&v=".(_REVNUM != 0 ? _REVNUM : 0)."\">\\1</a>", $string, -1); $string = preg_replace("/\[\[([^\]]*)\]\]/e", "parse_links_callback('\\1')", $string, -1); $string = preg_replace("/\[a #([^\]]*)\]/", "<a name=\"\\1\"></a>", $string, -1); *************** *** 506,517 **** } - function parse_lists($string) - { - $string = preg_replace("/(^|\n)(\*.*)(?=(\n[^\*])|$)/Use", "parse_lists_callback('\\2')", $string, -1); - $string = preg_replace("/\<\/li\>\n*/", "</li>", $string, -1); - $string = preg_replace("/\<\/ul\>\n*/", "</ul>", $string, -1); - return $string; - } - function parse_tables($string) { --- 521,524 ---- *************** *** 555,558 **** --- 562,567 ---- function parse_votes($string) { + if($this->html_caching) + return $string; return preg_replace("/\[showvote ([0123456789]+)\]/Ue", "parse_votes_callback('\\1')", $string, -1); } *************** *** 580,583 **** --- 589,593 ---- $string = preg_replace("/(\[\/comment\])(.*)(\[comment[^\]]*\])/Use", "'\\1'.fix_comments_callback2('\\2').'\\3'", $string, -1); $string = preg_replace("/(\[\/comment\])(?=\n*)(.*)(?!\[comment[^\]]*\])$/Use", "'\\1'.fix_comments_callback2('\\2')", $string, 1); + $string = preg_replace("/(\[\/comment\])(.*)$/se", "fix_comments_callback('\\1\\2', 4)", $string, 1); $string = preg_replace("/(\[\/comment\])([\n\r]*)(\[comment[^\]]*\])/", "\\1\\3", $string, -1); return $string; *************** *** 595,599 **** function parse_urls($string) { - //$string = preg_replace("/\[url\]\[url\]/", "[url]", $string, -1); $string = preg_replace("/\[\/url\]\[\/url\]/", "[/url]", $string, -1); $string = preg_replace("/\[\[url\](.*)\[\/url\] ([^\]]*)\]/Ue", "parse_urls_callback('\\1', '\\2')", $string, -1); $string = preg_replace("/\[\[url\](.*)\[\/url\]\]/Ue", "parse_urls_callback('\\1')", $string, -1); --- 605,608 ---- *************** *** 611,615 **** function parse_paragraphs($string) { ! $string = preg_replace("/(\n|^)(:.*)(\n[^:]|$)/Use", "'\\1'.parse_paragraphs_callback('\\2', '\\3')", $string, -1); return $string; } --- 620,630 ---- function parse_paragraphs($string) { ! $string = preg_replace("/(\n|\r|^)(:+)([^\n\r]*)(?=[\n\r])/e", "parse_paragraphs_callback('\\3', '\\2')", $string, -1); ! return $string; ! } ! ! function parse_lists($string) ! { ! $string = preg_replace("/(\n|\r|^)\*([^\n\r]*)(?=[\n\r])/e", "parse_lists_callback('\\2')", $string, -1); return $string; } *************** *** 617,622 **** function parse_newsletterquotes($string) { ! $string = preg_replace("/(\n|^)>/", "\\1>", $string, -1); ! $string = preg_replace("/(\n|^)>(.*)(?=\n[^>]|$)/Use", "parse_newsletterquotes_callback('\\2', '\\3')", $string, -1); return stripslashes($string); } --- 632,637 ---- function parse_newsletterquotes($string) { ! $string = preg_replace("/(\n|\r|^)>/", "\\1>", $string, -1); ! $string = preg_replace("/(\n|\r|^)(>+)([^\n\r]*)(?=[\n\r])/e", "parse_newsletterquotes_callback('\\3', '\\2')", $string, -1); return stripslashes($string); } *************** *** 624,628 **** function parse_code($string) { ! $string = preg_replace("/\[code\](.*)\[\/code\]/Us", "<pre class=\"WikiCode\">\r\\1\r</pre>\r", $string, -1); return $string; } --- 639,643 ---- function parse_code($string) { ! $string = preg_replace("/\[code\](.*)\[\/code\]/Use", "'<pre class=\"WikiCode\">\r'.htmlentities('\\1', ENT_NOQUOTES).'\r</pre>\r'", $string, -1); return $string; } *************** *** 656,665 **** "/ü/", "/ý/", "/þ/", "/&/", "/"/", "/</", "/>/"); ! $replace = array(" ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "", "®", "¯", ! "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", ! "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", ! "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", ! "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", ! "ü", "ý", "þ", "&", "\"", "<", ">"); return preg_replace($search, $replace, $string); --- 671,680 ---- "/ü/", "/ý/", "/þ/", "/&/", "/"/", "/</", "/>/"); ! $replace = array(" ", "¬â", "¢", "£", "¬Ã", "ââ", "¬â", "âü", "¬Ã", "©", "ââ", "´", "¨", "âââ ", "âÃ", "âò", ! "âà û", "±", "ââ§", "âââ¢", "¬â¢", "µ", "âà Ã", "âà ë", "âà è", "ÅÃ", "âà ´", "¬â¢", "¬â«", "Å©", "â¶", "ââ", "¬ø", "¬°", "¬", ! "âà ö", "âÃ", "ââà ", "âà Ã", "¬´", "»", "âö", "¬â ", "âÃ", "âÃ", "âï", "âÃ", "âì", "âÃì", "âÃî", "âÃú", "âÃù", "âÃò", "âÃô", ! "ââ", "âóä", "âø", "ââ", "âà Ã", "âè", "âÃÏ", "âÃâ«", "èà ", "èÃ", "âð", "¬â", "âÃö", "âÃû", "âÃâ", "âÃ", "âä", "âà ", "âã", ! "âà ", "âç", "âé", "âè", "âÃ¥", "âì", "âî", "ãø", "âÃ", "âö", "âõ", "âô", "ÆÂ±", "ÃÃ", "Ãú", "¬Ã", "Ãò", "Ãô", "Ãö", ! "¬â", "Ãù", "Ãõ", "&", "\"", "<", ">"); return preg_replace($search, $replace, $string); Index: stats.inc =================================================================== RCS file: /cvsroot/fuwiki/fuwiki_1_0/stats.inc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** stats.inc 13 Oct 2004 20:28:26 -0000 1.1.1.1 --- stats.inc 7 Nov 2004 12:00:33 -0000 1.2 *************** *** 104,111 **** else if(preg_match("/firefox/i", $agent)) $browser = "Mozilla FireFox"; - else if(preg_match("/mozilla/i", $agent) || preg_match("/gecko/i", $agent)) - $browser = "Mozilla/Gecko"; else if(preg_match("/msie/i", $agent) || preg_match("/internet explorer/i", $agent)) $browser = "Internet Explorer"; $this->inc_count("browser_".$browser); --- 104,111 ---- else if(preg_match("/firefox/i", $agent)) $browser = "Mozilla FireFox"; else if(preg_match("/msie/i", $agent) || preg_match("/internet explorer/i", $agent)) $browser = "Internet Explorer"; + else if(preg_match("/mozilla/i", $agent) || preg_match("/gecko/i", $agent)) + $browser = "Mozilla/Gecko"; $this->inc_count("browser_".$browser); Index: index.php =================================================================== RCS file: /cvsroot/fuwiki/fuwiki_1_0/index.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** index.php 15 Oct 2004 11:49:04 -0000 1.3 --- index.php 7 Nov 2004 12:00:33 -0000 1.4 *************** *** 38,41 **** --- 38,43 ---- require("priv.inc"); require("stats.inc"); + + // Create objects *************** *** 72,86 **** { // Save uploaded file ! if(is_uploaded_file($_FILES['userfile']['tmp_name'])) { ! move_uploaded_file($_FILES['userfile']['tmp_name'], "upload/".rawurldecode(utf8_decode(_PAGENAME))."_".$_FILES['userfile']['name']); ! $WikiStats->inc_count("total_image_uploads"); ! } ! // Move uploaded (previewed file) ! if(!empty($_POST["uploaded_file"])) ! { ! copy("upload/temp/".rawurldecode(utf8_decode(_PAGENAME))."_".rawurldecode(utf8_decode($_POST["uploaded_file"])), "upload/".rawurldecode(utf8_decode(_PAGENAME))."_".rawurldecode(utf8_decode($_POST["uploaded_file"]))); ! unlink("upload/temp/".rawurldecode(utf8_decode(_PAGENAME))."_".rawurldecode(utf8_decode($_POST["uploaded_file"]))); ! $WikiStats->inc_count("total_image_uploads"); ! } if(!empty($_POST["revision"]) && $_POST["revision"] < $WikiIO->get_latest_revision_number(_PAGENAME)) { --- 74,78 ---- { // Save uploaded file ! save_image(_PAGENAME, $_FILES['userfile']['name'], $_FILES['userfile']['tmp_name']); if(!empty($_POST["revision"]) && $_POST["revision"] < $WikiIO->get_latest_revision_number(_PAGENAME)) { *************** *** 97,110 **** if(!empty($_POST["commented"])) { ! $WikiStats->edit_page(); // Save uploaded file ! if(is_uploaded_file($_FILES['userfile']['tmp_name'])) { ! move_uploaded_file($_FILES['userfile']['tmp_name'], "upload/".rawurldecode(utf8_decode(_PAGENAME))."_".$_FILES['userfile']['name']); ! $WikiStats->inc_count("total_image_uploads"); ! } $temp_rev = $WikiIO->get_revision(_PAGENAME); $d = getdate(); ! $comment = $_POST["comment"]; if(_PAGENAME == "FWikiNews") { $comment = "'''Date''': ". $d["mon"] ."/". $d["mday"] ." ". $d["year"] ." '''Author''': ". $WikiUser->get_name() ."\n" . $comment; --- 89,99 ---- if(!empty($_POST["commented"])) { ! $WikiStats->edit_page(true); // Save uploaded file ! save_image(_PAGENAME, $_FILES['userfile']['name'], $_FILES['userfile']['tmp_name']); $temp_rev = $WikiIO->get_revision(_PAGENAME); $d = getdate(); ! $comment = fuwiki_entities_commentbox($_POST["comment"]); if(_PAGENAME == "FWikiNews") { $comment = "'''Date''': ". $d["mon"] ."/". $d["mday"] ." ". $d["year"] ." '''Author''': ". $WikiUser->get_name() ."\n" . $comment; *************** *** 112,116 **** } else ! $WikiIO->write(_PAGENAME, $WikiUser->get_name(), utf8_encode($temp_rev->text)."\n\n". "[comment".($action != _COMMENT_DEFAULT ? " action=\"".stripslashes($action)."\"":"")." timestamp=".get_timestamp()."]\n".$comment ." ".stripslashes($_POST["signature"])."[/comment]"); } --- 101,105 ---- } else ! $WikiIO->write(_PAGENAME, $WikiUser->get_name(), $temp_rev->text."\n\n". "[comment".($action != _COMMENT_DEFAULT ? " action=\"".stripslashes($action)."\"":"")." timestamp=".get_timestamp()."]\n".$comment ." ".stripslashes($_POST["signature"])."[/comment]"); } *************** *** 180,187 **** header("Content-type: text/html; charset=UTF-8"); ! begin_html(); // Everything between <body> and </body> ! echo utf8_encode($out); // Finish page --- 169,176 ---- header("Content-type: text/html; charset=UTF-8"); ! begin_html(); // Everything between <body> and </body> ! echo (utf8_encode($out)); // Finish page Index: functions.inc =================================================================== RCS file: /cvsroot/fuwiki/fuwiki_1_0/functions.inc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** functions.inc 16 Oct 2004 15:55:32 -0000 1.3 --- functions.inc 7 Nov 2004 12:00:32 -0000 1.4 *************** *** 1,4 **** ! <?PHP ! /* fuwiki - A free Wiki Software * --- 1,4 ---- ! <?PHP ! /* fuwiki - A free Wiki Software * *************** *** 20,85 **** * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ! */ ! ! ############ MAIN FUNCTIONS ############# ! ! function show($pagename, $isMain=false, $show_news=false) ! { ! global $WikiIO, $WikiParser, $WikiUser, $_GET; if(!$WikiIO->page_exists($pagename)) ! return _WIKIPAGE_NOT_FOUND; ! if($pagename == "FWikiNews" && _PAGENAME != "FWikiNews" && !$show_news) { ! include("FWiki/News.php"); ! return (FWikiMain()); } else if($isMain && $_GET["show_revchanges"] == true) { $revision = $WikiIO->get_revision($pagename, _REVNUM); $old_revision = $WikiIO->get_revision($pagename, $revision->revision-1); ! } ! else if($isMain) { ! $revision = $WikiIO->get_revision($pagename, _REVNUM); ! } ! else { ! $revision = $WikiIO->get_revision($pagename); ! } ! ! if($revision == null) ! return _WIKIPAGE_NOT_FOUND; else if($old_revision != null) ! return $WikiParser->compare($revision->text, $old_revision->text, $isMain); ! return $WikiParser->parse($revision->text, $isMain) .($isMain ? "\n<a name=\"wiki_pageend\"></a>\n" : ""); ! } ! ! function show_edit($pagename, $v="", $nosubmit=false, $text="") ! { ! global $WikiIO; ! ! if($text != "") ! { ! $out = "<textarea name=\"WikiCode\" rows=\"25\" class=\"WikiCodeArea\">".$text."</textarea>"; ! return $out; ! } ! ! $revision = $WikiIO->get_revision($pagename, $v); ! ! $out = "<form enctype=\"multipart/form-data\" id=\"edit_form\" name=\"wiki_edit\" method=\"POST\" action=\"index.php?".rawurldecode(utf8_decode($pagename))."\">"; ! $out .= "<textarea name=\"WikiCode\" rows=\"25\" style=\"width: 100%\" class=\"WikiCodeArea\">".stripslashes($revision->text)."</textarea>"; ! ! if($revision == null) ! $out .= "<input type=\"hidden\" name=\"revision\" value=\"1\">"; ! else ! $out .= "<input type=\"hidden\" name=\"revision\" value=\"".$revision->revision."\">"; ! ! if($nosubmit == false) { ! $out .= "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\""._MAX_UPLOAD_SIZE."\">"; ! $out .= "<br />". _EDIT_UPLOAD ." <input name=\"userfile\" class=\"userfile\" type=\"file\"> "; ! $out .= "<input type=\"submit\" class=\"btn_submit\" name=\"edited\" value=\"". _EDIT_SUBMIT. "\" accesskey=\"s\">"; ! $out .= "<input type=\"submit\" class=\"btn_preview\" name=\"preview\" value=\"". _EDIT_SUBMIT_PREVIEW ."\" accesskey=\"f\">"; ! } ! $out .= "</form>"; ! ! return $out; ! } ! function show_preview($pagename) { --- 20,85 ---- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ! */ ! ! ############ MAIN FUNCTIONS ############# ! ! function show($pagename, $isMain=false, $show_news=false) ! { ! global $WikiIO, $WikiParser, $WikiUser, $_GET; ! $additional = ($isMain ? "\n<a name=\"wiki_pageend\"></a>\n" : ""); if(!$WikiIO->page_exists($pagename)) ! return _WIKIPAGE_NOT_FOUND; ! if($pagename == "FWikiNews" && _PAGENAME != "FWikiNews" && !$show_news) { ! include("FWiki/News.php"); ! return (FWikiMain()); } + else if($pagename != _PAGENAME && !preg_match("/(^|:)menu/", $pagename)) + return get_html_cache($pagename); else if($isMain && $_GET["show_revchanges"] == true) { $revision = $WikiIO->get_revision($pagename, _REVNUM); $old_revision = $WikiIO->get_revision($pagename, $revision->revision-1); ! } ! else if($isMain && $WikiUser->is_authorized() && $WikiUser->get_setting("show_comments")) { ! if(_REVNUM == 0 && empty($_GET["nocache"])) ! return get_html_cache($pagename).$additional; ! $revision = $WikiIO->get_revision($pagename, _REVNUM); ! } ! else { ! $revision = $WikiIO->get_revision($pagename); ! } ! ! if($revision == null) ! return _WIKIPAGE_NOT_FOUND; else if($old_revision != null) ! return $WikiParser->compare($revision->text, $old_revision->text, $isMain); ! return $WikiParser->parse($revision->text, $isMain) .$additional; ! } ! ! function show_edit($pagename, $v="", $nosubmit=false, $text="") ! { ! global $WikiIO; ! $revision = $WikiIO->get_revision($pagename, $v); ! ! if($nosubmit == false) ! $out = "<form enctype=\"multipart/form-data\" id=\"edit_form\" method=\"post\" action=\"index.php?".rawurldecode(utf8_decode($pagename))."\">"; ! ! $out .= "<textarea name=\"WikiCode\" rows=\"25\" style=\"width: 100%\" class=\"WikiCodeArea\">".stripslashes(($text != "" ? $text : $revision->text))."</textarea>"; ! ! if($nosubmit == false) { ! if($revision == null) ! $out .= "<input type=\"hidden\" name=\"revision\" value=\"1\">"; ! else ! $out .= "<input type=\"hidden\" name=\"revision\" value=\"".$revision->revision."\">"; ! ! $out .= "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\""._MAX_UPLOAD_SIZE."\">"; ! $out .= "<br />". _EDIT_UPLOAD ." <input name=\"userfile\" class=\"userfile\" type=\"file\"> "; ! $out .= "<input type=\"submit\" class=\"btn_submit\" name=\"edited\" value=\"". _EDIT_SUBMIT. "\" accesskey=\"s\">"; ! $out .= "<input type=\"submit\" class=\"btn_preview\" name=\"preview\" value=\"". _EDIT_SUBMIT_PREVIEW ."\" accesskey=\"f\">"; ! $out .= "</form>"; ! } ! ! return $out; ! } ! function show_preview($pagename) { *************** *** 89,102 **** if(is_uploaded_file($_FILES['userfile']['tmp_name'])) { ! move_uploaded_file($_FILES['userfile']['tmp_name'], "upload/temp/".$pagename."_".$_FILES['userfile']['name']); ! $form_upload = "Upload: <i>".$_FILES['userfile']['name']."</i> "; ! $form_upload .= "<input type=\"hidden\" name=\"uploaded_file\" value=\"".$_FILES['userfile']['name']."\">"; ! $_POST["uploaded_file"] = $_FILES['userfile']['name']; ! }elseif(!empty($_POST["uploaded_file"])){ ! $form_upload = "Upload: <i>".$_POST["uploaded_file"]."</i> "; ! $form_upload .= "<input type=\"hidden\" name=\"uploaded_file\" value=\"".$_POST["uploaded_file"]."\">"; ! }else{ $form_enctype = " enctype=\"multipart/form-data\""; ! $form_upload = "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\""._MAX_UPLOAD_SIZE."\">"; $form_upload .= "Upload: <input name=\"userfile\" type=\"file\"> "; } --- 89,96 ---- if(is_uploaded_file($_FILES['userfile']['tmp_name'])) { ! save_image(_PAGENAME, $_FILES['userfile']['name'], $_FILES['userfile']['tmp_name']); ! $form_upload = "Upload: <i>".$_FILES['userfile']['name']."</i><br />"; $form_enctype = " enctype=\"multipart/form-data\""; ! $form_upload .= "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\""._MAX_UPLOAD_SIZE."\">"; $form_upload .= "Upload: <input name=\"userfile\" type=\"file\"> "; } *************** *** 107,115 **** $out .= "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr><td>"; ! $out .= $WikiParser->parse(stripslashes(utf8_decode($_POST["WikiCode"])), true); $out .= "</td></tr><tr><td><br /><hr /></td></tr><tr><td>"; ! $out .= "<form".$form_enctype." name=\"previewform\" action=\"index.php?".rawurldecode(utf8_decode(_PAGENAME))."\" method=\"post\">"; $out .= "<input type=\"hidden\" name=\"revision\" value=\"".$_POST["revision"]."\">"; ! $out .= "<textarea name=\"WikiCode\" rows=\"25\" cols=\"90\">".stripslashes(rawurldecode(utf8_decode($_POST["WikiCode"])))."</textarea>"; $out .= "<br />".$form_upload; $out .= "<input type=\"submit\" name=\"edited\" value=\"Abschicken\" accesskey=\"s\"> "; --- 101,109 ---- $out .= "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr><td>"; ! $out .= $WikiParser->parse(encode_utf8($_POST["WikiCode"]), true); $out .= "</td></tr><tr><td><br /><hr /></td></tr><tr><td>"; ! $out .= "<form".$form_enctype." name=\"previewform\" action=\"index.php?"._PAGENAME."\" method=\"post\">"; $out .= "<input type=\"hidden\" name=\"revision\" value=\"".$_POST["revision"]."\">"; ! $out .= "<textarea name=\"WikiCode\" rows=\"25\" cols=\"90\">".encode_utf8($_POST["WikiCode"])."</textarea>"; $out .= "<br />".$form_upload; $out .= "<input type=\"submit\" name=\"edited\" value=\"Abschicken\" accesskey=\"s\"> "; *************** *** 119,142 **** return $out; ! } ! ! function show_revfix($pagename, $v="") ! { ! global $WikiParser, $WikiIO, $_POST; ! ! $out = ""; ! if($_POST["revision"] < $WikiIO->get_latest_revision_number($pagename)) ! $out .= get_wikielement("revision_warning"); ! ! return $out; ! } ! ! function show_user_page($pagename) ! { ! global $WikiUser, $WikiIO; ! ! if($WikiUser->is_authorized()) { ! if($WikiUser->get_setting("show_userpages") == true && $WikiIO->page_exists($WikiUser->get_name().":".$pagename)) ! return show($WikiUser->get_name().":".$pagename); else if($WikiIO->page_exists($pagename.".". $WikiUser->get_language())) return show($pagename.".". $WikiUser->get_language()); --- 113,136 ---- return $out; ! } ! ! function show_revfix($pagename, $v="") ! { ! global $WikiParser, $WikiIO, $_POST; ! ! $out = ""; ! if($_POST["revision"] < $WikiIO->get_latest_revision_number($pagename)) ! $out .= get_wikielement("revision_warning"); ! ! return $out; ! } ! ! function show_user_page($pagename) ! { ! global $WikiUser, $WikiIO; ! ! if($WikiUser->is_authorized()) { ! if($WikiUser->get_setting("show_userpages") == true && $WikiIO->page_exists($WikiUser->get_name().":".$pagename)) ! return show($WikiUser->get_name().":".$pagename); else if($WikiIO->page_exists($pagename.".". $WikiUser->get_language())) return show($pagename.".". $WikiUser->get_language()); *************** *** 144,247 **** if($WikiIO->page_exists($pagename.".". _LANGUAGE)) return show($pagename.".". _LANGUAGE); ! ! return show($pagename); ! } ! ! ! function get_wikielement($name) ! { ! if(file_exists("elements/".$name.".inc")) ! { ! return include("elements/".$name.".inc"); ! }else{ ! return "[Wikielement: \"".$name."\"]"; ! } ! } ! ! function get_wikivar($name) ! { ! global $WikiLayout; ! return $WikiLayout->get_var($name); ! } ! ! ! ######## MISCELLANEOUS FUNCTIONS ######## ! ! function init() ! { ! global $_GET, $_POST, $_ALIASES; ! ! // Set up pagename ! $queries = explode("&", getenv("QUERY_STRING")); ! $pagename = preg_replace("/=/", "", $queries[0]); ! if(!empty($_GET["s"])) $pagename = $_GET["s"]; ! ! foreach($_ALIASES as $key=>$value) ! { ! if($pagename == $key) $pagename = $value; ! } ! if(!empty($_GET["v"])) define("_REVNUM", $_GET["v"]); else if(!empty($_POST["v"])) define("_REVNUM", $_POST["v"]); else define("_REVNUM", 0); ! if(empty($pagename)) $pagename=$_ALIASES[""]; ! ! define("_PAGENAME", rawurldecode(utf8_decode($pagename))); ! ! // Set up if user is in edit-mode ! if(!empty($_GET["edit"])) define("_EDIT_MODE", true); else define("_EDIT_MODE", false); if(!empty($_GET["v"])) define("_EDIT_REV", $_GET["v"]); else define("_EDIT_REV", 0); ! ! // Set up if user is in preview-mode ! if(!empty($_POST["preview"])) define("_PREVIEW_MODE", true); else define("_PREVIEW_MODE", false); ! } ! ! function FWikiPage_exists($name) ! { ! return file_exists("FWiki/".$name.".php"); ! } ! ! function timestamp_pattern($date) ! { ! preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $date, $o); ! $s = preg_replace("/\%y/", $o[1], _FWC_TIMEFORMAT); $s = preg_replace("/\%m/", $o[2], $s); ! $s = preg_replace("/\%d/", $o[3], $s); $s = preg_replace("/\%h/", $o[4], $s); ! $s = preg_replace("/\%s/", $o[5], $s); ! ! return $s; ! } ! ! function get_timestamp() ! { ! $d = getdate(); ! return $d["year"].($d["mon"] < 10 ? "0".$d["mon"] : $d["mon"]).($d["mday"] < 10 ? "0".$d["mday"] : $d["mday"]).($d["hours"] < 10 ? "0".$d["hours"] : $d["hours"]).($d["minutes"] < 10 ? "0".$d["minutes"] : $d["minutes"]).($d["seconds"] < 10 ? "0".$d["seconds"] : $d["seconds"]); ! } ! ! ############## HTML OUTPUT ############## ! function begin_html($nolayout=false) ! { ! global $WikiLayout, $WikiParser; ! $out = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; $out .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n"; ! $out .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"; ! $out .= "<head>\n"; ! $out .= "<meta http-equiv=\"content-type\" content=\"text/html;". _CHARSET ."\" />\n"; ! $out .= "<title>".utf8_decode(_PAGENAME)." - ". _SITENAME."</title>\n"; ! if(!$nolayout) ! $out .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"layout/".$WikiParser->work_html($WikiLayout->get_layout())."/".$WikiParser->work_html($WikiLayout->get_style()).".css\" />\n"; ! $out .= "</head>\n"; ! $out .= "<body>\n"; ! ! echo utf8_encode($out); ! } ! ! function end_html() ! { ! $out = "\n</body>"; ! $out .= "\n</html>"; ! ! echo utf8_encode($out); ! } ! ! ?> --- 138,497 ---- if($WikiIO->page_exists($pagename.".". _LANGUAGE)) return show($pagename.".". _LANGUAGE); ! ! return show($pagename); ! } ! ! ! function get_wikielement($name) ! { ! if(file_exists("elements/".$name.".inc")) ! { ! return include("elements/".$name.".inc"); ! }else{ ! return "[Wikielement: \"".$name."\"]"; ! } ! } ! ! function get_wikivar($name) ! { ! global $WikiLayout; ! return $WikiLayout->get_var($name); ! } ! ! function get_image_url($name) ! { ! global $WikiIO; ! $query = "SELECT id, pagename, name FROM images WHERE name='".$name."' AND pagename='"._PAGENAME."' LIMIT 1;"; ! $res = $WikiIO->query($query); ! if(!$res || mysql_num_rows($res) == 0) ! return 0; ! $a = mysql_fetch_array($res); ! $ext = get_file_extension($a["name"]); ! return "upload/".$a["id"].".".$ext; ! } ! ! function save_image($pagename, $name, $tempname) ! { ! global $WikiIO, $WikiUser, $WikiStats; ! if(is_uploaded_file($tempname)) { ! $query = "INSERT images (uploader_id, pagename, name, upload_time) VALUES (".$WikiUser->get_id().", '".$pagename."', '".$name."', '".get_timestamp()."');"; ! $WikiIO->query($query); ! $query = "SELECT id, name, pagename FROM images WHERE name='".$name."' AND pagename='".$pagename."' LIMIT 1;"; ! $res = $WikiIO->query($query); ! if(!$res || mysql_num_rows($res) == 0) ! return; ! $a = mysql_fetch_array($res); ! $ext = get_file_extension($a["name"]); ! move_uploaded_file($tempname, "upload/".$a["id"].".".$ext); ! $WikiStats->inc_count("total_image_uploads"); ! } ! } ! ! ! ############ HTML-CACHE ################ ! ! function get_html_cache($pagename) ! { ! global $WikiIO, $WikiUser, $WikiParser; ! $res = $WikiIO->query("SELECT id,revision,name,lang FROM html_cache WHERE name='".$pagename."' AND lang='".$WikiUser->get_language()."' LIMIT 1;"); ! if(!$res || mysql_num_rows($res) < 1) ! update_html_cache($pagename); ! else { ! $a = mysql_fetch_array($res); ! if($WikiIO->get_latest_revision_number($pagename) != $a["revision"]) { ! update_html_cache($pagename); ! } ! } ! ! $res = $WikiIO->query("SELECT id,name,text,lang FROM html_cache WHERE name='".$pagename."' AND lang='".$WikiUser->get_language()."' LIMIT 1;"); ! if(!$res || mysql_num_rows($res) < 1) ! return mysql_error(); ! $h = mysql_fetch_array($res); ! return $WikiParser->parse_html_cache($h["text"]); ! } ! ! function update_html_cache($pagename) ! { ! global $WikiIO, $WikiParser, $WikiUser; ! $rev = $WikiIO->get_revision_fast($pagename); ! if(!$rev) ! return; ! $res = $WikiIO->query("SELECT id,name FROM html_cache WHERE name='".$pagename."' AND lang='".$WikiUser->get_language()."' LIMIT 1;"); ! if(!$res || mysql_num_rows($res) < 1) ! $query = "INSERT html_cache (revision, name, text, lang) VALUES(".$rev->revision.", '".$pagename."', '".addslashes($WikiParser->parse($rev->text, true, true))."', '".$WikiUser->get_language()."');"; ! else { $a = mysql_fetch_array($res); ! $query = "UPDATE html_cache SET revision=".$rev->revision.", text='".addslashes($WikiParser->parse($rev->text, true, true))."', lang='".$WikiUser->get_language()."' WHERE id=".$a["id"]." LIMIT 1;"; ! } ! $WikiIO->query($query);echo mysql_error(); ! } ! ! ! ######## MISCELLANEOUS FUNCTIONS ######## ! ! function get_file_extension($name) ! { ! if(preg_match("/\.(\w+)$/", $name, $o)) ! return $o[1]; ! return ""; ! } ! ! function fuwiki_entities_commentbox($str) ! { ! $str = preg_replace("/--/", "<nowiki>--</nowiki>", $str); ! return $str; ! } ! ! function fuwiki_entities($str) ! { ! $str = preg_replace("/âè/", "€", $str); ! return $str; ! } ! ! function seems_utf8($str) { ! for ($i=0; $i < strlen($str); $i++) { ! if (ord($str[$i]) < 0x80) continue; # 0bbbbbbb ! else if ((ord($str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb ! else if ((ord($str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb ! else if ((ord($str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb ! else if ((ord($str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb ! else if ((ord($str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b ! else return false; # Does not match any model ! for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? ! if ((++$i == strlen($str)) || ((ord($str[$i]) & 0xC0) != 0x80)) ! return false; ! } ! } ! return true; ! } ! ! ! function checkTitleEncoding( $s ) { ! # Check for non-UTF-8 URLs ! $ishigh = preg_match( '/[\x80-\xff]/', $s); ! if(!$ishigh) return $s; ! ! $isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . ! '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ); ! if( $isutf8 ) return $s; ! } ! ! function init() ! { ! global $_GET, $_POST, $_ALIASES; ! ! $pagename = getenv("QUERY_STRING"); ! // Set up pagename ! if(preg_match("/&#/", getenv("QUERY_STRING"))) ! $pagename = decode_utf8(getenv("QUERY_STRING")); ! ! $queries = explode("&", $pagename); ! ! //echo seems_utf8($queries[0])."<br>"; ! $pagename = preg_replace("/=/", "", $queries[0]); ! $pagename = preg_replace("/\'/", "", $pagename); ! $pagename = preg_replace("/\"/", "", $pagename); ! if(!empty($_GET["s"])) $pagename = $_GET["s"]; ! ! foreach($_ALIASES as $key=>$value) ! { ! if($pagename == $key) $pagename = $value; ! } ! if(!empty($_GET["v"])) define("_REVNUM", $_GET["v"]); else if(!empty($_POST["v"])) define("_REVNUM", $_POST["v"]); else define("_REVNUM", 0); ! if(empty($pagename)) $pagename=$_ALIASES[""]; ! ! if(seems_utf8($pagename)) ! define("_PAGENAME", encode_utf8(rawurldecode($pagename))); ! else ! define("_PAGENAME", encode_utf8(utf8_encode(rawurldecode($pagename)))); ! ! // Set up if user is in edit-mode ! if(!empty($_GET["edit"])) define("_EDIT_MODE", true); else define("_EDIT_MODE", false); if(!empty($_GET["v"])) define("_EDIT_REV", $_GET["v"]); else define("_EDIT_REV", 0); ! ! // Set up if user is in preview-mode ! if(!empty($_POST["preview"])) define("_PREVIEW_MODE", true); else define("_PREVIEW_MODE", false); ! } ! ! function FWikiPage_exists($name) ! { ! return file_exists("FWiki/".$name.".php"); ! } ! ! function timestamp_pattern($date) ! { ! preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $date, $o); ! $s = preg_replace("/\%y/", $o[1], _FWC_TIMEFORMAT); $s = preg_replace("/\%m/", $o[2], $s); ! $s = preg_replace("/\%d/", $o[3], $s); $s = preg_replace("/\%h/", $o[4], $s); ! $s = preg_replace("/\%s/", $o[5], $s); ! $s = preg_replace("/\%i/", $o[6], $s); ! ! return $s; ! } ! ! function get_timestamp() ! { ! $d = getdate(); ! return $d["year"].($d["mon"] < 10 ? "0".$d["mon"] : $d["mon"]).($d["mday"] < 10 ? "0".$d["mday"] : $d["mday"]).($d["hours"] < 10 ? "0".$d["hours"] : $d["hours"]).($d["minutes"] < 10 ? "0".$d["minutes"] : $d["minutes"]).($d["seconds"] < 10 ? "0".$d["seconds"] : $d["seconds"]); ! } ! ! function decode_utf8($source) { ! $utf8Str = ""; ! $entityArray = explode ("&#", $source); ! $size = count ($entityArray); ! for ($i = 0; $i < $size; $i++) { ! $subStr = $entityArray[$i]; ! $nonEntity = strstr ($subStr, ';'); ! if ($nonEntity !== false) { ! $unicode = intval (substr ($subStr, 0, (strpos ($subStr, ';') + 1))); ! // determine how many chars are needed to reprsent this unicode char ! if ($unicode < 128) { ! $utf8Substring = chr ($unicode); ! } ! else if ($unicode >= 128 && $unicode < 2048) { ! $binVal = str_pad (decbin ($unicode), 11, "0", STR_PAD_LEFT); ! $binPart1 = substr ($binVal, 0, 5); ! $binPart2 = substr ($binVal, 5); ! $char1 = chr (192 + bindec ($binPart1)); ! $char2 = chr (128 + bindec ($binPart2)); ! $utf8Substring = $char1 . $char2; ! } ! else if ($unicode >= 2048 && $unicode < 65536) { ! $binVal = str_pad (decbin ($unicode), 16, "0", STR_PAD_LEFT); ! $binPart1 = substr ($binVal, 0, 4); ! $binPart2 = substr ($binVal, 4, 6); ! $binPart3 = substr ($binVal, 10); ! ! $char1 = chr (224 + bindec ($binPart1)); ! $char2 = chr (128 + bindec ($binPart2)); ! $char3 = chr (128 + bindec ($binPart3)); ! $utf8Substring = $char1 . $char2 . $char3; ! } ! else { ! $binVal = str_pad (decbin ($unicode), 21, "0", STR_PAD_LEFT); ! $binPart1 = substr ($binVal, 0, 3); ! $binPart2 = substr ($binVal, 3, 6); ! $binPart3 = substr ($binVal, 9, 6); ! $binPart4 = substr ($binVal, 15); ! $char1 = chr (240 + bindec ($binPart1)); ! $char2 = chr (128 + bindec ($binPart2)); ! $char3 = chr (128 + bindec ($binPart3)); ! $char4 = chr (128 + bindec ($binPart4)); ! $utf8Substring = $char1 . $char2 . $char3 . $char4; ! } ! if (strlen ($nonEntity) > 1) ! $nonEntity = substr ($nonEntity, 1); // chop the first char (';') ! else ! $nonEntity = ''; ! ! $utf8Str .= $utf8Substring . $nonEntity; ! } ! else { ! $utf8Str .= $subStr; ! } ! } ! return $utf8Str; ! } ! ! function encode_utf8($source) { ! // array used to figure what number to decrement from character order value ! // according to number of characters used to map unicode to ascii by utf-8 ! $decrement[4] = 240; ! $decrement[3] = 224; ! $decrement[2] = 192; ! $decrement[1] = 0; ! ! // the number of bits to shift each charNum by ! $shift[1][0] = 0; ! $shift[2][0] = 6; ! $shift[2][1] = 0; ! $shift[3][0] = 12; ! $shift[3][1] = 6; ! $shift[3][2] = 0; ! $shift[4][0] = 18; ! $shift[4][1] = 12; ! $shift[4][2] = 6; ! $shift[4][3] = 0; ! $pos = 0; ! $len = strlen ($source); ! $encodedString = ''; ! while ($pos < $len) { ! $asciiPos = ord (substr ($source, $pos, 1)); ! if (($asciiPos >= 240) && ($asciiPos <= 255)) { ! // 4 chars representing one unicode character ! $thisLetter = substr ($source, $pos, 4); ! $pos += 4; ! } ! else if (($asciiPos >= 224) && ($asciiPos <= 239)) { ! // 3 chars representing one unicode character ! $thisLetter = substr ($source, $pos, 3); ! $pos += 3; ! } ! else if (($asciiPos >= 192) && ($asciiPos <= 223)) { ! // 2 chars representing one unicode character ! $thisLetter = substr ($source, $pos, 2); ! $pos += 2; ! } ! else { ! // 1 char (lower ascii) ! $thisLetter = substr ($source, $pos, 1); ! $pos += 1; ! } ! ! // process the string representing the letter to a unicode entity ! $thisLen = strlen ($thisLetter); ! $thisPos = 0; ! $decimalCode = 0; ! while ($thisPos < $thisLen) { ! $thisCharOrd = ord (substr ($thisLetter, $thisPos, 1)); ! if ($thisPos == 0) { ! $charNum = intval ($thisCharOrd - $decrement[$thisLen]); ! $decimalCode += ($charNum << $shift[$thisLen][$thisPos]); ! } ! else { ! $charNum = intval ($thisCharOrd - 128); ! $decimalCode += ($charNum << $shift[$thisLen][$thisPos]); ! } ! $thisPos++; ! } ! ! if ($thisLen == 1) ! $encodedLetter = chr($decimalCode); ! else ! $encodedLetter = "&#". str_pad($decimalCode, 5, "0", STR_PAD_LEFT) . ';'; ! ! $encodedString .= $encodedLetter; ! } ! return $encodedString; ! } ! ! ############## HTML OUTPUT ############## ! function begin_html($nolayout=false) ! { ! global $WikiLayout, $WikiParser; ! $out = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; $out .= "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n"; ! $out .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"; ! $out .= "<head>\n"; ! $out .= "<meta http-equiv=\"content-type\" content=\"text/html;". _CHARSET ."\" />\n"; ! $out .= "<title>"._PAGENAME." - ". _SITENAME."</title>\n"; ! if(!$nolayout) ! $out .= "<link rel=\"stylesheet\" type=\"text/css\" href=\"layout/".$WikiParser->work_html($WikiLayout->get_layout())."/".$WikiParser->work_html($WikiLayout->get_style()).".css\" />\n"; ! $out .= "</head>\n"; ! $out .= "<body>\n"; ! ! echo utf8_encode($out); ! } ! ! function end_html() ! { ! $out = "\n</body>"; ! $out .= "\n</html>"; ! ! echo utf8_encode($out); ! } ! ! ?> Index: io.mysql.inc =================================================================== RCS file: /cvsroot/fuwiki/fuwiki_1_0/io.mysql.inc,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** io.mysql.inc 15 Oct 2004 11:49:04 -0000 1.2 --- io.mysql.inc 7 Nov 2004 12:00:33 -0000 1.3 *************** *** 58,64 **** if($v != 0) ! $query = "SELECT name, date, creator_id, revision, text FROM wikis WHERE name ='".addslashes(rawurldecode(utf8_decode($pagename)))."' AND revision=". $v ." LIMIT 1;"; else ! $query = "SELECT name, date, creator_id, revision, text FROM "._CACHE_TBL." WHERE name ='".addslashes(rawurldecode(utf8_decode($pagename)))."' ORDER BY revision DESC LIMIT 1;"; $res = mysql_query($query, $this->link); --- 58,64 ---- if($v != 0) ! $query = "SELECT name, date, creator_id, revision, text FROM wikis WHERE name ='".$pagename."' AND revision=". $v ." LIMIT 1;"; else ! $query = "SELECT name, date, creator_id, revision, text FROM "._CACHE_TBL." WHERE name ='".$pagename."' ORDER BY revision DESC LIMIT 1;"; $res = mysql_query($query, $this->link); *************** *** 77,83 **** if($v != 0) ! $query = "SELECT name, date, creator_id, revision, text FROM wikis WHERE name ='".addslashes(rawurldecode(utf8_decode($pagename)))."' AND revision=". $v ." ORDER BY revision DESC LIMIT 1;"; else ! $query = "SELECT name, date, creator_id, revision, text FROM "._CACHE_TBL." WHERE name ='".addslashes(rawurldecode(utf8_decode($pagename)))."' ORDER BY revision DESC LIMIT 1;"; $res = mysql_query($query, $this->link); --- 77,83 ---- if($v != 0) ! $query = "SELECT name, date, creator_id, revision, text FROM wikis WHERE name ='".$pagename."' AND revision=". $v ." ORDER BY revision DESC LIMIT 1;"; else ! $query = "SELECT name, date, creator_id, revision, text FROM "._CACHE_TBL." WHERE name ='".$pagename."' ORDER BY revision DESC LIMIT 1;"; $res = mysql_query($query, $this->link); *************** *** 103,114 **** $rev = $old->revision; $insert_tbl_old = "INSERT INTO wikis (date, creator_id, revision, name, text) VALUES (". $old->timestamp.", "; ! $insert_tbl_old .= $old->user.", ".$rev.", '".addslashes(rawurldecode(utf8_decode($pagename)))."', '".addslashes($old->text)."');"; $insert_tbl = "UPDATE wikis_cache SET date=". get_timestamp() .", creator_id=".$uid.", revision=". ($rev+1) .", "; ! $insert_tbl .= "text='". addslashes(rawurldecode(utf8_decode($text))) ."' WHERE name='".addslashes(utf8_decode(rawurldecode($pagename)))."' LIMIT 1;"; mysql_query($insert_tbl_old, $this->link) or $this->error(_MYSQL_INSERT_ERROR); } else { $rev = 0; ! $insert_tbl = "INSERT INTO "._CACHE_TBL." (name, date, creator_id, revision, text) VALUES('".addslashes(rawurldecode(utf8_decode($pagename)))."', ". get_timestamp() .", ". $uid .", 1, "; ! $insert_tbl .= "'".addslashes(rawurldecode(utf8_decode($text)))."');"; } } else { --- 103,114 ---- $rev = $old->revision; $insert_tbl_old = "INSERT INTO wikis (date, creator_id, revision, name, text) VALUES (". $old->timestamp.", "; ! $insert_tbl_old .= $old->user.", ".$rev.", '".$pagename."', '".addslashes($old->text)."');"; $insert_tbl = "UPDATE wikis_cache SET date=". get_timestamp() .", creator_id=".$uid.", revision=". ($rev+1) .", "; ! $insert_tbl .= "text='". addslashes(encode_utf8($text)) ."' WHERE name='".$pagename."' LIMIT 1;"; mysql_query($insert_tbl_old, $this->link) or $this->error(_MYSQL_INSERT_ERROR); } else { $rev = 0; ! $insert_tbl = "INSERT INTO "._CACHE_TBL." (name, date, creator_id, revision, text) VALUES('".encode_utf8($pagename)."', ". get_timestamp() .", ". $uid .", 1, "; ! $insert_tbl .= "'".addslashes(encode_utf8($text))."');"; } } else { *************** *** 118,122 **** $rev = 0; $insert_tbl = "INSERT INTO wikis(date, creator_id, revision, text, name) VALUES (".get_timestamp().", ".$uid.", ".($rev+1).", "; ! $insert_tbl .= "'".addslashes(rawurldecode(utf8_decode($text)))."', '".addslashes(rawurldecode(utf8_decode($pagename)))."');"; } mysql_query($insert_tbl, $this->link) or $this->error(_MYSQL_INSERT_ERROR); --- 118,122 ---- $rev = 0; $insert_tbl = "INSERT INTO wikis(date, creator_id, revision, text, name) VALUES (".get_timestamp().", ".$uid.", ".($rev+1).", "; ! $insert_tbl .= "'".addslashes(encode_utf8($text))."', '".encode_utf8($pagename)."');"; } mysql_query($insert_tbl, $this->link) or $this->error(_MYSQL_INSERT_ERROR); |