$q)) { //supported and qualify is greater
$lang = $arr[1];
$q = $arr[2];
}
}
}
define('LANG',$lang);
mb_http_output(ENCODING);
mb_internal_encoding(ENCODING);
*/
/////////////////////////////////////////////////
// 初期設定 (バージョン/著作権)
define('S_VERSION','1.4pre2');
define('S_COPYRIGHT','
"PukiWiki" '.S_VERSION.' Copyright © 2001,2002
PukiWiki Developers Team.
License is GNU/GPL.
Based on "PukiWiki" 1.3 by sng
');
/////////////////////////////////////////////////
// 初期設定 (サーバ変数)
foreach (array('HTTP_USER_AGENT','PHP_SELF','SERVER_NAME','SERVER_SOFTWARE','SERVER_ADMIN') as $key) {
define($key,array_key_exists($key,$HTTP_SERVER_VARS) ? $HTTP_SERVER_VARS[$key] : '');
}
/////////////////////////////////////////////////
// 初期設定(時間)
define('LOCALZONE',date('Z'));
define('UTIME',time() - LOCALZONE);
define('MUTIME',getmicrotime());
/////////////////////////////////////////////////
// 言語ファイル読み込み
if (!file_exists(LANG.'.lng')||!is_readable(LANG.'.lng')) {
die_message(LANG.'.lng(language file) is not found.');
}
require(LANG.'.lng');
/////////////////////////////////////////////////
// 初期設定(設定ファイルの場所)
define('INI_FILE','./pukiwiki.ini.php');
/////////////////////////////////////////////////
// 設定ファイル読み込み
if (!file_exists(INI_FILE)||!is_readable(INI_FILE)) {
die_message(INI_FILE.' is not found.');
}
require(INI_FILE);
/////////////////////////////////////////////////
// 設定ファイルの変数チェック
if(!is_writable(DATA_DIR)) {
die_message('DATA_DIR is not found or not writable.');
}
if(!is_writable(DIFF_DIR)) {
die_message('DIFF_DIR is not found or not writable.');
}
if($do_backup && !is_writable(BACKUP_DIR)) {
die_message('BACKUP_DIR is not found or not writable.');
}
$wrong_ini_file = '';
if (!isset($rss_max)) $wrong_ini_file .= '$rss_max ';
if (!isset($page_title)) $wrong_ini_file .= '$page_title ';
if (!isset($note_hr)) $wrong_ini_file .= '$note_hr ';
if (!isset($related_link)) $wrong_ini_file .= '$related_link ';
if (!isset($show_passage)) $wrong_ini_file .= '$show_passage ';
if (!isset($rule_related_str)) $wrong_ini_file .= '$rule_related_str ';
if (!isset($load_template_func)) $wrong_ini_file .= '$load_template_func ';
if (!defined('LANG')) $wrong_ini_file .= 'LANG ';
if (!defined('PLUGIN_DIR')) $wrong_ini_file .= 'PLUGIN_DIR ';
if ($wrong_ini_file) {
die_message('The setting file runs short of information.
The version of a setting file may be old.
These option are not found : '.$wrong_ini_file);
}
if (!is_page($defaultpage)) {
touch(get_filename($defaultpage));
}
if (!is_page($whatsnew)) {
touch(get_filename($whatsnew));
}
if (!is_page($interwiki)) {
touch(get_filename($interwiki));
}
/////////////////////////////////////////////////
// 初期設定($script)
if (!isset($script) or $script == '') {
$script =
($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://')
. $_SERVER['SERVER_NAME']
.($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT'])
. $_SERVER['SCRIPT_NAME'];
}
if (php_sapi_name() == 'cgi' && !preg_match("/^http:\/\/[-a-zA-Z0-9\@:;_.]+\//",$script)) {
die_message("please set '\$script' in ".INI_FILE);
}
/////////////////////////////////////////////////
// 入力値の整形
$cookie = $HTTP_COOKIE_VARS;
if (get_magic_quotes_gpc()) {
$get = $post = $cookie = array();
foreach($HTTP_GET_VARS as $key => $value) {
if (!is_array($value)) {
$get[$key] = stripslashes($value);
}
}
foreach($HTTP_POST_VARS as $key => $value) {
$post[$key] = stripslashes($value);
}
foreach($HTTP_COOKIE_VARS as $key => $value) {
$cookie[$key] = stripslashes($value);
}
}
else {
$post = is_array($HTTP_POST_VARS) ? $HTTP_POST_VARS : array();
$get = is_array($HTTP_GET_VARS) ? $HTTP_GET_VARS : array();
}
if (!empty($get['page'])) {
$get['page'] = preg_replace('/^(\[\[)?(.*)(?(1)\]\])$/','$2',$get['page']);
}
if (!empty($post['page'])) {
$post['page'] = preg_replace('/^(\[\[)?(.*)(?(1)\]\])$/','$2',$post['page']);
}
if (!empty($post['msg'])) {
$post['msg'] = preg_replace("/\r/",'',$post['msg']);
}
/*
if (!empty($post['word'])) {
$post['word'] = $post['word'];
}
if (!empty($get['word'])) {
$get['word'] = $get['word'];
}
*/
@$vars = array_merge($post,$get);
if (!array_key_exists('page',$vars)) {
$get['page'] = $post['page'] = $vars['page'] = '';
}
$arg = rawurldecode((getenv('QUERY_STRING') != '') ? getenv('QUERY_STRING') :
(array_key_exists(0,$HTTP_SERVER_VARS['argv']) ? $HTTP_SERVER_VARS['argv'][0] : ''));
/////////////////////////////////////////////////
// 初期設定($WikiName,$BracketNameなど)
// $WikiName = '[A-Z][a-z]+(?:[A-Z][a-z]+)+';
// $WikiName = '\b[A-Z][a-z]+(?:[A-Z][a-z]+)+\b';
$WikiName = '(?":]+:?';
$BracketName = '(?!\s):?[^\r\n\t\f\[\]<>#&":]+:?(?\]]+?\]*)(?(1)\]\])";
// 注釈
$NotePattern = '/\(\(((?:(?>(?:(?!\(\()(?!\)\)(?:[^\)]|$)).)+)|(?R))*)\)\)/ex';
// AutoLink
$AutoLink = get_autolink_pattern();
// make_link()関数と密接に関係するので、編集時は注意
$LinkPattern = "/
( (?#<1>:all)
(?# url )
(?:\[\[([^\]]+) (?#<2>:alias)
(?:>|>|:))? (?# '>' or '>' or ':')
(\[)? (?#<3>:open bracket)
( (?#<4>:url)
(?:https?|ftp|news)
(?::\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+)
)
(?(3)\s([^\]]+)\]) (?#<5>:alias, close bracket if <3>)
(?(2)\]\]) (?# close bracket if <2>)
|
(?# mailto)
(?:\[\[([^\]]+)(?:>|>|:))?(?#<6>:alias)
([\w.-]+@[\w-]+\.[\w.-]+) (?#<7>:mailto>)
(?(6)\]\]) (?# close bracket if <6>)
|
(?# BracketName or InterWikiName)
(\[\[ (?#<8>:all)
(?:
(\[\[)? (?#<9>:open bracket)
([^\[\]]+) (?#<10>:alias)
(?:>|>) (?# '>' or '>')
)?
(?:
(\[\[)? (?#<11>:open bracket)
( (?#<12>PageName)
($WikiName) (?#<13>WikiName)
|
($BracketName) (?#<14>BracketName)
)?
((?(9)\]\]|(?(11)\]\])))?(?#<15>:close bracket if <9> or <11>)
(\#(?:[a-zA-Z][\w-]*)?)? (?#<16>anchor)
(?(15)|(?(9)\]\]|(?(11)\]\]))) (?#close bracket if <9> or <11> but !<15>)
|
(\[\[)? (?#<17>:open bracket)
(\[*?[^\s\]]+?\]*?) (?#<18>InterWiki)
((?(9)\]\]|(?(17)\]\])))?(?#<19>:close bracket if <9> or <17>)
(\:.*?) (?#<20>param)
(?(19)|(?(9)\]\]|(?(17)\]\]))) (?#close bracket if <9> or <17> but !<19>)
)?
\]\])
|
(?# WikiNmae, AutoLink)
($AutoLink) (?#<21>:all)
)/x";
/////////////////////////////////////////////////
// 初期設定(その他のグローバル変数)
// 現在時刻
$now = format_date(UTIME);
// 脚注
$foot_explain = array();
// 関連するページ
$related = array();
// skin内でDTD宣言を切り替えるのに使用。paint.inc.php対策
// FALSE:XHTML 1.1
// TRUE :XHTML 1.0 Transitional
$html_transitional = FALSE;
// フェイスマークを$line_rulesに加える
if ($usefacemark) {
$line_rules = array_merge($line_rules,$facemark_rules);
}
// ユーザ定義ルール
$user_rules = array_merge($str_rules,$line_rules);
/////////////////////////////////////////////////
// 初期設定(URL変数の処理)
// 後方互換性 (?md5=...)
if (array_key_exists('md5',$vars) and $vars['md5'] != '') {
$vars['cmd'] = 'md5';
}
// cmdもpluginも指定されていない場合は、$argをページ名かInterWikiNameであるとみなす
if (!array_key_exists('cmd',$vars) and !array_key_exists('plugin',$vars)) {
//$argも指定されていなかった場合は$defaultpageを表示
if ($arg == '') {
$arg = $defaultpage;
}
$get['cmd'] = $post['cmd'] = $vars['cmd'] = 'read';
$get['page'] = $post['page'] = $vars['page'] = preg_replace('/^(\[\[)?(.*)(?(1)\]\])$/','$2',$arg);
}
?>