listやrecentなどのプラグインで,閲覧権限のないページでも,そのページ名が閲覧できてしまいます.そのため,ページの存在は隠匿できません.
list プラグインは自力で書いてみました.(PHPもPukiWikiの構成も全く分かってないので,自分でもかなり冗長だと思います.もっとまともなコードをお教えください.)
--- list.inc.php.orig 2006-04-20 22:37:45.000000000 +0900 +++ list.inc.php 2006-04-22 01:06:20.000000000 +0900 @@ -21,7 +21,14 @@ { global $non_list, $whatsnew; - $pages = array_diff(get_existpages(), array($whatsnew)); + $pages = array(); + $files = get_existpages(); + foreach (array_keys($files) as $_file) { + $_page = $files[$_file]; + if ($_page == $whatsnew || + (! check_readable($_page, false, false)) ) continue; + $pages[$_file] = $_page; + } if (! $withfilename) $pages = array_diff($pages, preg_grep('/' . $non_list . '/', $pages)); if (empty($pages)) return '';
しかし,これは list プラグインだけで済む問題ではないと思います.recent や RecentDeleted など関連するプラグインは多数あります.特に,ls2 プラグインと tilte オプションを使うと,セクションタイトルだけですが,閲覧権限のないページも見えてしまいます.
そこで,get_existpages と同様に,readable なページを全て返す関数 get_readablepages が必要ではないでしょうか?この関数があれば,多くの場合,get_exstpages を get_readablepages と置き換えるだけで済むと思います.
また,閲覧権限のないページの名前が見えてもよい場合を考えて,pukiwiki.ini.php に $list_if_readable といったフラグを作り,これが 1 ならリストへの閲覧許可のないページの名前の表示が抑制されるとよいと思います.