plugin が空ページを返すときの $defaultpage の表示

メッセージ

list, backup, topicpath, attach などのプラグインでリスト表示する内容がないなどの理由で body 部分に '' を返す場合があります.

このとき,$defaultpage が表示される仕様になっているとおもいます. このとき,閲覧者に $defaultpage に閲覧権限があるかどうかチェックされることなく,表示されてしまいます.

プラグイン側で空を返さないようにする方法は,私程度でも対処できそうでした.list の例だと

--- list.inc.php.orig	2006-09-02 11:49:20.000000000 +0900
+++ list.inc.php	2006-08-15 20:04:16.000000000 +0900
@@ -19,12 +19,12 @@
// Get a list
function plugin_list_getlist($withfilename = FALSE)
{
-	global $non_list, $whatsnew;
+	global $non_list, $whatsnew, $_err_notexist;

	$pages = array_diff(get_existpages(), array($whatsnew));
	if (! $withfilename)
		$pages = array_diff($pages, preg_grep('/' . $non_list . '/S', $pages));
-	if (empty($pages)) return '';
+	if (empty($pages)) return $_err_notexist;

	return page_list($pages, 'read', $withfilename);
}

※ $_err_notexist は,現在は yetlist 専用なので '該当項目はありません' や '表示すべき内容はありません' とかに変える必要があると思います.

しかし,該当するプラグインは多く,やはり本体側で対処すべき問題ではないかと思います.対処法は

  1. プラグインから 空 が返されたときでも,$defaultpage の表示前に閲覧権限をチェックする
  2. プラグインから 空 が返されたは,$defaultpage ではなく '表示すべき内容はありません' といったメッセージを表示する

すみませんが,私では,プラグインから帰ってきたときに $defaultpage を表示している部分を見つけられずパッチを作れませんでした.

恐れりますが,よろしくお願いします.

関連:BugTrack/366 -- yetlist が空を返すときの対処


lib/pukiwki.ini で返された $body が null で,$base も null のときは,閲覧権限のチェックなしで $defaultpage が表示されているようです. そこで,check_readable をその前に呼び出して,閲覧権限をチェックするようにしました.

--- pukiwiki.php.orig	2007-02-03 01:02:33.000000000 +0900
+++ pukiwiki.php	2007-02-03 01:34:44.000000000 +0900
@@ -112,6 +112,7 @@
	$body = & $retvars['body'];
} else {
	if ($base == '' || ! is_page($base)) {
+		check_readable($defaultpage, true, true);
		$base  = & $defaultpage;
		$title = htmlspecialchars(strip_bracket($base));
		$page  = make_search($base);

pukiwki-1.4.7 用です.よろしければ,採用していただければと思います.



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-31 (月) 15:04:05
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 4.202 sec.

SourceForge