OSDN Git Service

BugTrack/2247 External link cushion page - external_link (PHP4.x)
[pukiwiki/pukiwiki.git] / lib / pukiwiki.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // pukiwiki.php
4 // Copyright
5 //   2002-2016 PukiWiki Development Team
6 //   2001-2002 Originally written by yu-ji
7 // License: GPL v2 or (at your option) any later version
8 //
9 // PukiWiki main script
10
11 if (! defined('DATA_HOME')) define('DATA_HOME', '');
12
13 /////////////////////////////////////////////////
14 // Include subroutines
15
16 if (! defined('LIB_DIR')) define('LIB_DIR', '');
17
18 require(LIB_DIR . 'func.php');
19 require(LIB_DIR . 'file.php');
20 require(LIB_DIR . 'plugin.php');
21 require(LIB_DIR . 'html.php');
22 require(LIB_DIR . 'backup.php');
23
24 require(LIB_DIR . 'convert_html.php');
25 require(LIB_DIR . 'make_link.php');
26 require(LIB_DIR . 'diff.php');
27 require(LIB_DIR . 'config.php');
28 require(LIB_DIR . 'link.php');
29 require(LIB_DIR . 'auth.php');
30 require(LIB_DIR . 'proxy.php');
31 if (! extension_loaded('mbstring')) {
32         require(LIB_DIR . 'mbstring.php');
33 }
34
35 // Defaults
36 $notify = 0;
37
38 // Load *.ini.php files and init PukiWiki
39 require(LIB_DIR . 'init.php');
40
41 // Load optional libraries
42 if ($notify) {
43         require(LIB_DIR . 'mail.php'); // Mail notification
44 }
45
46 /////////////////////////////////////////////////
47 // Main
48 if (manage_page_redirect()) {
49         exit;
50 }
51 $retvars = array();
52 $is_cmd = FALSE;
53 if (isset($vars['cmd'])) {
54         $is_cmd  = TRUE;
55         $plugin = & $vars['cmd'];
56 } else if (isset($vars['plugin'])) {
57         $plugin = & $vars['plugin'];
58 } else {
59         $plugin = '';
60 }
61 if ($plugin != '') {
62         ensure_valid_auth_user();
63         if (exist_plugin_action($plugin)) {
64                 // Found and exec
65                 $retvars = do_plugin_action($plugin);
66                 if ($retvars === FALSE) exit; // Done
67
68                 if ($is_cmd) {
69                         $base = isset($vars['page'])  ? $vars['page']  : '';
70                 } else {
71                         $base = isset($vars['refer']) ? $vars['refer'] : '';
72                 }
73         } else {
74                 // Not found
75                 $msg = 'plugin=' . htmlsc($plugin) .
76                         ' is not implemented.';
77                 $retvars = array('msg'=>$msg,'body'=>$msg);
78                 $base    = & $defaultpage;
79         }
80 }
81
82 $title = htmlsc(strip_bracket($base));
83 $page  = make_search($base);
84 if (isset($retvars['msg']) && $retvars['msg'] != '') {
85         $title = str_replace('$1', $title, $retvars['msg']);
86         $page  = str_replace('$1', $page,  $retvars['msg']);
87 }
88
89 if (isset($retvars['body']) && $retvars['body'] != '') {
90         $body = & $retvars['body'];
91 } else {
92         if ($base == '' || ! is_page($base)) {
93                 check_readable($defaultpage, true, true);
94                 $base  = & $defaultpage;
95                 $title = htmlsc(strip_bracket($base));
96                 $page  = make_search($base);
97         }
98
99         $vars['cmd']  = 'read';
100         $vars['page'] = & $base;
101
102         prepare_display_materials();
103         $body  = convert_html(get_source($base));
104 }
105
106 // Output
107 catbody($title, $page, $body);