OSDN Git Service

Merge tag 'r1_5_0' from branch_r1_5
[pukiwiki/pukiwiki.git] / lib / pukiwiki.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: pukiwiki.php,v 1.23 2011/01/25 15:01:01 henoheno Exp $
4 //
5 // PukiWiki 1.4.*
6 //  Copyright (C) 2002-2005 by PukiWiki Developers Team
7 //  http://pukiwiki.sourceforge.jp/
8 //
9 // PukiWiki 1.3.*
10 //  Copyright (C) 2002-2004 by PukiWiki Developers Team
11 //  http://pukiwiki.sourceforge.jp/
12 //
13 // PukiWiki 1.3 (Base)
14 //  Copyright (C) 2001-2002 by yu-ji <sng@factage.com>
15 //  http://factage.com/sng/pukiwiki/
16 //
17 // Special thanks
18 //  YukiWiki by Hiroshi Yuki <hyuki@hyuki.com>
19 //  http://www.hyuki.com/yukiwiki/
20 //
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.
25 //
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.
30
31 if (! defined('DATA_HOME')) define('DATA_HOME', '');
32
33 /////////////////////////////////////////////////
34 // Include subroutines
35
36 if (! defined('LIB_DIR')) define('LIB_DIR', '');
37
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');
43
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');
53 }
54
55 // Defaults
56 $notify = $trackback = $referer = 0;
57
58 // Load *.ini.php files and init PukiWiki
59 require(LIB_DIR . 'init.php');
60
61 // Load optional libraries
62 if ($notify) {
63         require(LIB_DIR . 'mail.php'); // Mail notification
64 }
65 if ($trackback || $referer) {
66         // Referer functionality uses trackback functions
67         // without functional reason now
68         require(LIB_DIR . 'trackback.php'); // TrackBack
69 }
70
71 /////////////////////////////////////////////////
72 // Main
73
74 $retvars = array();
75 $is_cmd = FALSE;
76 if (isset($vars['cmd'])) {
77         $is_cmd  = TRUE;
78         $plugin = & $vars['cmd'];
79 } else if (isset($vars['plugin'])) {
80         $plugin = & $vars['plugin'];
81 } else {
82         $plugin = '';
83 }
84 if ($plugin != '') {
85         if (exist_plugin_action($plugin)) {
86                 // Found and exec
87                 $retvars = do_plugin_action($plugin);
88                 if ($retvars === FALSE) exit; // Done
89
90                 if ($is_cmd) {
91                         $base = isset($vars['page'])  ? $vars['page']  : '';
92                 } else {
93                         $base = isset($vars['refer']) ? $vars['refer'] : '';
94                 }
95         } else {
96                 // Not found
97                 $msg = 'plugin=' . htmlsc($plugin) .
98                         ' is not implemented.';
99                 $retvars = array('msg'=>$msg,'body'=>$msg);
100                 $base    = & $defaultpage;
101         }
102 }
103
104 $title = htmlsc(strip_bracket($base));
105 $page  = make_search($base);
106 if (isset($retvars['msg']) && $retvars['msg'] != '') {
107         $title = str_replace('$1', $title, $retvars['msg']);
108         $page  = str_replace('$1', $page,  $retvars['msg']);
109 }
110
111 if (isset($retvars['body']) && $retvars['body'] != '') {
112         $body = & $retvars['body'];
113 } else {
114         if ($base == '' || ! is_page($base)) {
115                 $base  = & $defaultpage;
116                 $title = htmlsc(strip_bracket($base));
117                 $page  = make_search($base);
118         }
119
120         $vars['cmd']  = 'read';
121         $vars['page'] = & $base;
122
123         $body  = convert_html(get_source($base));
124
125         if ($trackback) $body .= tb_get_rdf($base); // Add TrackBack-Ping URI
126         if ($referer) ref_save($base);
127 }
128
129 // Output
130 catbody($title, $page, $body);
131 exit;
132 ?>