ブラケットの中身がWikiNameとして通用してしまうときに、ブラケットをはずしたページが未作成として表示されてしまいます。
[[FrontPage]],[[BugTrack]]が
FrontPage,BugTrackとして表示されています。
[[ほげ>[[BugTrack/107]]]]のような場合におかしくなるのを修理しました。(57~58行目)
--- yetlist.inc.php Thu Jul 25 13:35:34 2002 +++ yetlist.new.php Thu Jul 25 14:32:38 2002 @@ -45,14 +45,18 @@ )/ex","check_link('$1','$name')",$line); } - foreach($_gwbn as $tmp) + foreach($_gwbn as $wbn => $refs_arr) { - $wbn = $tmp["name"]; - $name = $tmp["refer"]; - + + foreach (array_unique($refs_arr) as $name) + { + if(preg_match("/^[^>]+>([^\]]+)/",$wbn,$match)) { $wbn = $match[1]; + //閉じブラケットの補充。/^\[\[/でも必要十分だが念のため + if(preg_match("/^\[\[[^\]]+$/",$wbn)) + $wbn = "$wbn]]"; if(!preg_match("/($WikiName)|($BracketName)/",$wbn)) $wbn = "[[$wbn]]"; } @@ -91,21 +95,21 @@ if(!is_page($wbn)) { - $lists[strip_bracket($wbn)] = strip_bracket($wbn); - $refer[strip_bracket($wbn)][$name] = $name; + $refer[$wbn][] = $name; + } + + $wbn = $keep; //ひー ^^;) } } - ksort($lists); - foreach($lists as $wbn) + ksort($refer); + foreach($refer as $wbn => $refs_arr) { - $url = $wbn; - if(!preg_match("/($WikiName)|($BracketName)/",$url)) - $url = "[[$url]]"; - $url = rawurlencode($url); + $url = rawurlencode($wbn); + $name = strip_bracket($wbn); $link_ref = ""; - foreach($refer[$wbn] as $refs) + foreach(array_unique($refs_arr) as $refs) { $ref = strip_bracket($refs); $refurl = rawurlencode($refs); @@ -114,7 +118,7 @@ } $link_ref = trim($link_ref); - $ret["body"] .= "<li><a href=\"$script?cmd=edit&page=$url&refer=$refurl\">$wbn</a> <em>($link_ref)</em></li>\n"; + $ret["body"] .= "<li><a href=\"$script?cmd=edit&page=$url&refer=$refurl\">$name</a> <em>($link_ref)</em></li>\n"; } @@ -155,8 +159,7 @@ } else if(preg_match("/^($BracketName)|($WikiName)$/",$name)) { - $_gwbn[$name]["name"] = $name; - $_gwbn[$name]["refer"] = $refer; + $_gwbn[$name][] = $refer; return; } else
--- yetlist.inc.php Thu Jul 25 13:35:34 2002 +++ yetlist.new.php Thu Jul 25 14:32:38 2002 @@ -45,1 +45,1 @@ - )/ex","check_link('$1','$name')",$line); + )/ex","check_link('$1',\$name)",$line);