<?php
// PukiWiki - Yet another WikiWikiWeb clone.
+// pukiwiki.php
+// Copyright
+// 2002-2016 PukiWiki Development Team
+// 2001-2002 Originally written by yu-ji
+// License: GPL v2 or (at your option) any later version
//
-// PukiWiki 1.4.*
-// Copyright (C) 2002 by PukiWiki Developers Team
-// http://pukiwiki.org/
-//
-// PukiWiki 1.3.*
-// Copyright (C) 2002 by PukiWiki Developers Team
-// http://pukiwiki.org/
-//
-// PukiWiki 1.3 (Base)
-// Copyright (C) 2001,2002 by sng.
-// <sng@factage.com>
-// http://factage.com/sng/pukiwiki/
-//
-// Special thanks
-// YukiWiki by Hiroshi Yuki
-// <hyuki@hyuki.com>
-// http://www.hyuki.com/yukiwiki/
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// $Id: pukiwiki.php,v 1.2 2004/08/01 02:22:36 henoheno Exp $
-/////////////////////////////////////////////////
-
-/////////////////////////////////////////////////
-// ¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤äÀßÄê¥Õ¥¡¥¤¥ë¤òÃÖ¤¯¥Ç¥£¥ì¥¯¥È¥ê
+// PukiWiki main script
if (! defined('DATA_HOME')) define('DATA_HOME', '');
/////////////////////////////////////////////////
-// ¥µ¥Ö¥ë¡¼¥Á¥ó¤Î³ÊǼÀè¥Ç¥£¥ì¥¯¥È¥ê (¾¤Î *.php¥Õ¥¡¥¤¥ë)
+// Include subroutines
if (! defined('LIB_DIR')) define('LIB_DIR', '');
-/////////////////////////////////////////////////
-// ¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÆɤ߹þ¤ß
+require(LIB_DIR . 'func.php');
+require(LIB_DIR . 'file.php');
+require(LIB_DIR . 'plugin.php');
+require(LIB_DIR . 'html.php');
+require(LIB_DIR . 'backup.php');
+
+require(LIB_DIR . 'convert_html.php');
+require(LIB_DIR . 'make_link.php');
+require(LIB_DIR . 'diff.php');
+require(LIB_DIR . 'config.php');
+require(LIB_DIR . 'link.php');
+require(LIB_DIR . 'auth.php');
+require(LIB_DIR . 'proxy.php');
+if (! extension_loaded('mbstring')) {
+ require(LIB_DIR . 'mbstring.php');
+}
-require('func.php');
-require('file.php');
-require('plugin.php');
-require('html.php');
-require('backup.php');
+// Defaults
+$notify = 0;
-require('convert_html.php');
-require('make_link.php');
-require('diff.php');
-require('config.php');
-require('link.php');
-require('trackback.php');
-require('auth.php');
-require('proxy.php');
-require('mail.php');
-if (!extension_loaded('mbstring')) {
- require('mbstring.php');
-}
+// Load *.ini.php files and init PukiWiki
+require(LIB_DIR . 'init.php');
-// ½é´ü²½: ÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß
-require('init.php');
+// Load optional libraries
+if ($notify) {
+ require(LIB_DIR . 'mail.php'); // Mail notification
+}
/////////////////////////////////////////////////
-// ¥á¥¤¥ó½èÍý
-
-$base = $defaultpage;
+// Main
+if ($vars['page'] === FALSE) {
+ die_invalid_pagename();
+ exit;
+}
+if (manage_page_redirect()) {
+ exit;
+}
$retvars = array();
-
-// Plug-in action
-if (!empty($vars['plugin'])) {
- if (!exist_plugin_action($vars['plugin'])) {
- $s_plugin = htmlspecialchars($vars['plugin']);
- $msg = "plugin=$s_plugin is not implemented.";
- $retvars = array('msg'=>$msg,'body'=>$msg);
- }
- else {
- $retvars = do_plugin_action($vars['plugin']);
- if ($retvars !== FALSE) {
- $base = array_key_exists('refer',$vars) ? $vars['refer'] : '';
- }
- }
+$is_cmd = FALSE;
+if (isset($vars['cmd'])) {
+ $is_cmd = TRUE;
+ $plugin = & $vars['cmd'];
+} else if (isset($vars['plugin'])) {
+ $plugin = & $vars['plugin'];
+} else {
+ $plugin = '';
}
-// Command action
-else if (!empty($vars['cmd'])) {
- if (!exist_plugin_action($vars['cmd'])) {
- $s_cmd = htmlspecialchars($vars['cmd']);
- $msg = "cmd=$s_cmd is not implemented.";
+if ($plugin != '') {
+ ensure_valid_auth_user();
+ if (exist_plugin_action($plugin)) {
+ // Found and exec
+ $retvars = do_plugin_action($plugin);
+ if ($retvars === FALSE) exit; // Done
+
+ if ($is_cmd) {
+ $base = isset($vars['page']) ? $vars['page'] : '';
+ } else {
+ $base = isset($vars['refer']) ? $vars['refer'] : '';
+ }
+ } else {
+ // Not found
+ $msg = 'plugin=' . htmlsc($plugin) .
+ ' is not implemented.';
$retvars = array('msg'=>$msg,'body'=>$msg);
- }
- else {
- $retvars = do_plugin_action($vars['cmd']);
- $base = $vars['page'];
+ $base = & $defaultpage;
}
}
-if ($retvars !== FALSE) {
- $title = htmlspecialchars(strip_bracket($base));
- $page = make_search($base);
+$title = htmlsc(strip_bracket($base));
+$page = make_search($base);
+if (isset($retvars['msg']) && $retvars['msg'] != '') {
+ $title = str_replace('$1', $title, $retvars['msg']);
+ $page = str_replace('$1', $page, $retvars['msg']);
+}
- if (array_key_exists('msg',$retvars) and $retvars['msg'] != '') {
- $title = str_replace('$1',$title,$retvars['msg']);
- $page = str_replace('$1',$page,$retvars['msg']);
+if (isset($retvars['body']) && $retvars['body'] != '') {
+ $body = & $retvars['body'];
+} else {
+ if ($base == '' || ! is_page($base)) {
+ check_readable($defaultpage, true, true);
+ $base = & $defaultpage;
+ $title = htmlsc(strip_bracket($base));
+ $page = make_search($base);
}
- if (array_key_exists('body',$retvars) and $retvars['body'] != '') {
- $body = $retvars['body'];
- }
- else {
- if ($base == '' or !is_page($base)) {
- $base = $defaultpage;
- $title = htmlspecialchars(strip_bracket($base));
- $page = make_search($base);
- }
+ $vars['cmd'] = 'read';
+ $vars['page'] = & $base;
- $vars['cmd'] = 'read';
- $vars['page'] = $base;
- $body = convert_html(get_source($base));
- $body .= tb_get_rdf($vars['page']);
- ref_save($vars['page']);
- }
-
- // ** ½ÐÎϽèÍý **
- catbody($title,$page,$body);
+ prepare_display_materials();
+ $body = convert_html(get_source($base));
}
-// ** ½ªÎ» **
-?>
+
+// Output
+catbody($title, $page, $body);