2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: pukiwiki.php,v 1.22 2011/01/24 15:21:28 henoheno Exp $
6 // Copyright (C) 2002-2007 by PukiWiki Developers Team
7 // http://pukiwiki.sourceforge.jp/
10 // Copyright (C) 2002-2004 by PukiWiki Developers Team
11 // http://pukiwiki.sourceforge.jp/
13 // PukiWiki 1.3 (Base)
14 // Copyright (C) 2001-2002 by yu-ji <sng@factage.com>
15 // http://factage.com/sng/pukiwiki/
18 // YukiWiki by Hiroshi Yuki <hyuki@hyuki.com>
19 // http://www.hyuki.com/yukiwiki/
21 // This program is free software; you can redistribute it and/or modify
22 // it under the terms of the GNU General Public License as published by
23 // the Free Software Foundation; either version 2 of the License, or
24 // (at your option) any later version.
26 // This program is distributed in the hope that it will be useful,
27 // but WITHOUT ANY WARRANTY; without even the implied warranty of
28 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 // GNU General Public License for more details.
31 if (! defined('DATA_HOME')) define('DATA_HOME', '');
33 /////////////////////////////////////////////////
34 // Include subroutines
36 if (! defined('LIB_DIR')) define('LIB_DIR', '');
38 require(LIB_DIR . 'func.php');
39 require(LIB_DIR . 'file.php');
40 require(LIB_DIR . 'plugin.php');
41 require(LIB_DIR . 'html.php');
42 require(LIB_DIR . 'backup.php');
44 require(LIB_DIR . 'convert_html.php');
45 require(LIB_DIR . 'make_link.php');
46 require(LIB_DIR . 'diff.php');
47 require(LIB_DIR . 'config.php');
48 require(LIB_DIR . 'link.php');
49 require(LIB_DIR . 'auth.php');
50 require(LIB_DIR . 'proxy.php');
51 if (! extension_loaded('mbstring')) {
52 require(LIB_DIR . 'mbstring.php');
58 // Load *.ini.php files and init PukiWiki
59 require(LIB_DIR . 'init.php');
61 // Load optional libraries
63 require(LIB_DIR . 'mail.php'); // Mail notification
66 /////////////////////////////////////////////////
70 $page = isset($vars['page']) ? $vars['page'] : '';
71 $refer = isset($vars['refer']) ? $vars['refer'] : '';
73 if (isset($vars['cmd'])) {
74 $plugin = & $vars['cmd'];
75 } else if (isset($vars['plugin'])) {
76 $plugin = & $vars['plugin'];
82 if ($spam && $method != 'GET') {
84 $_spam = ! empty($spam);
85 $_plugin = strtolower($plugin);
89 case 'search': $_spam = FALSE; break;
92 if (isset($vars['add']) && $vars['add']) {
95 $_ignore[] = 'original';
98 case 'bugtrack': $_page = & $vars['base']; break;
99 case 'tracker': $_page = & $vars['_base']; break;
100 case 'read': $_page = & $page; break;
101 default: $_page = & $refer; break;
105 require(LIB_DIR . 'spam.php');
107 if (isset($spam['method'][$_plugin])) {
108 $_method = & $spam['method'][$_plugin];
109 } else if (isset($spam['method']['_default'])) {
110 $_method = & $spam['method']['_default'];
114 $exitmode = isset($spam['exitmode']) ? $spam['exitmode'] : '';
116 // Hack: ignorance several keys
119 foreach($vars as $key => $value) {
120 $_vars[$key] = & $vars[$key];
122 foreach($_ignore as $key) {
129 pkwk_spamfilter($method . ' to #' . $_plugin, $_page, $_vars, $_method, $exitmode);
135 if (exist_plugin_action($plugin)) {
136 $retvars = do_plugin_action($plugin);
137 if ($retvars === FALSE) exit; // Done
139 // Rescan $vars (Some plugins rewrite it)
140 if (isset($vars['cmd'])) {
141 $base = isset($vars['page']) ? $vars['page'] : '';
143 $base = isset($vars['refer']) ? $vars['refer'] : '';
146 $msg = 'plugin=' . htmlspecialchars($plugin) . ' is not implemented.';
147 $retvars = array('msg'=>$msg,'body'=>$msg);
148 $base = & $defaultpage;
153 $title = htmlspecialchars(strip_bracket($base));
154 $page = make_search($base);
155 if (isset($retvars['msg']) && $retvars['msg'] != '') {
156 $title = str_replace('$1', $title, $retvars['msg']);
157 $page = str_replace('$1', $page, $retvars['msg']);
160 if (isset($retvars['body']) && $retvars['body'] != '') {
161 $body = & $retvars['body'];
163 if ($base == '' || ! is_page($base)) {
164 $base = & $defaultpage;
165 $title = htmlspecialchars(strip_bracket($base));
166 $page = make_search($base);
169 $vars['cmd'] = 'read';
170 $vars['page'] = & $base;
172 $body = convert_html(get_source($base));
176 catbody($title, $page, $body);