OSDN Git Service

BugTrack/2594 Fix to work with other patterns
[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 ($vars['page'] === FALSE) {
49         die_invalid_pagename();
50         exit;
51 }
52 if (manage_page_redirect()) {
53         exit;
54 }
55 $retvars = array();
56 $is_cmd = FALSE;
57 if (isset($vars['cmd'])) {
58         $is_cmd  = TRUE;
59         $plugin = & $vars['cmd'];
60 } else if (isset($vars['plugin'])) {
61         $plugin = & $vars['plugin'];
62 } else {
63         $plugin = '';
64 }
65 if ($plugin != '') {
66         ensure_valid_auth_user();
67         if (exist_plugin_action($plugin)) {
68                 // Found and exec
69                 $retvars = do_plugin_action($plugin);
70                 if ($retvars === FALSE) exit; // Done
71
72                 if ($is_cmd) {
73                         $base = isset($vars['page'])  ? $vars['page']  : '';
74                 } else {
75                         $base = isset($vars['refer']) ? $vars['refer'] : '';
76                 }
77         } else {
78                 // Not found
79                 $msg = 'plugin=' . htmlsc($plugin) .
80                         ' is not implemented.';
81                 $retvars = array('msg'=>$msg,'body'=>$msg);
82                 $base    = & $defaultpage;
83         }
84 }
85
86 $title = htmlsc(strip_bracket($base));
87 $page  = make_search($base);
88 if (isset($retvars['msg']) && $retvars['msg'] != '') {
89         $title = str_replace('$1', $title, $retvars['msg']);
90         $page  = str_replace('$1', $page,  $retvars['msg']);
91 }
92
93 if (isset($retvars['body']) && $retvars['body'] != '') {
94         $body = & $retvars['body'];
95 } else {
96         if ($base == '' || ! is_page($base)) {
97                 check_readable($defaultpage, true, true);
98                 $base  = & $defaultpage;
99                 $title = htmlsc(strip_bracket($base));
100                 $page  = make_search($base);
101         }
102
103         $vars['cmd']  = 'read';
104         $vars['page'] = & $base;
105
106         prepare_display_materials();
107         $body  = convert_html(get_source($base));
108 }
109
110 // Output
111 catbody($title, $page, $body);