?php
/*
* PukiWiki Plugin "alias.inc.php" * ver.1.5 2005/05/28 * ver.1.5.1 2022/04/10 * License is GNU/GPL * modified by kochi<elfen@s9.xrea.com> * ver.1.5.1 PHP8.0対応
define('URL_MAX_BYTES',1024);
define('JUMP_MAX',2);
function plugin_alias_init()
{
$messages = array( '_alias_messages'=> array( 'msg_noalias' => "''このページは[[\$dest_page]]へのエイリアスに設定されています。''\n", 'war_mode_invalid' => false, //GETパラメータが対象外 //'war_ignore' => false, //ループの危険性がある呼び出し 'err_loc_invalid' => false, //BODY外での呼び出し(MenuBarなど) 'err_loop' => '(alias:ループしています)', //ジャンプ経路のループ 'err_url_too_long' => '(alias:URLの長さが上限を超えました)', //URL長の上限オーバー 'err_not_exist' => '(alias:指定されたページは存在しません)',//ページが無い・アンカーが不適切 'err_jump_max' => '(alias:ジャンプの回数が上限を超えました)',//ジャンプ回数オーバー ) ); set_plugin_messages($messages);
}
function plugin_alias_convert()
{
global $script,$vars,$defaultpage,$get; global $_alias_messages;
if($vars['cmd']=='edit') return '';
$my_get_vars = $get;
//MenuBarなどで呼び出されている可能性 global $body; if(isset($body)) return $_alias_messages['err_loc_invalid'];
//第一引数をジャンプ先ページ名とする if(func_num_args()<=0) return false;
$arg = func_get_arg(0); $temp = explode('#',$arg); if(count($temp) > 2) return $_alias_messages['err_not_exist']; list($dest_page,$anchor) = $temp;
if(!is_page($dest_page)) return $_alias_messages['err_not_exist'];
//cmd=readでない場合は何もしない if(array_key_exists('plugin',$my_get_vars) || $my_get_vars['cmd'] != 'read' || !is_page($my_get_vars['page'])) return $_alias_messages['war_mode_invalid'];
//noaliasパラメータがtrueの場合はジャンプしない if($get["noalias"]=='true'){ $msg = str_replace('$dest_page',$dest_page,$_alias_messages['msg_noalias']); return convert_html($msg); }
$alias = '&'.rawurlencode('alias[]').'='; $history = '';
if(isset($my_get_vars['alias'])){ //ジャンプ回数がすでに上限値に達していたらエラー if(count($my_get_vars['alias'])>=JUMP_MAX) return $_alias_messages['err_jump_max']; //経路履歴をチェック。ループしていればエラー foreach($my_get_vars['alias'] as $pg){ if($pg == $my_get_vars['page'] || $pg == $dest_page) return $_alias_messages['err_loop']; $history .= $alias. rawurlencode($pg); } }
//経路履歴にカレントのページを付け加える $history .= $alias .rawurlencode($my_get_vars['page']);
//ジャンプ先URLを生成。長すぎたらエラー $url = $script.'?cmd=read&page='.rawurlencode($dest_page).$history; if(isset($anchor)) $url .= '#'.rawurlencode($anchor);
if(strlen($url) > URL_MAX_BYTES) return $_alias_messages['err_url_too_long'];
//HTTP Headerを出力して終了 header("Location: $url"); die();
}
?>