non_listに指定しても、そのページを削除するとRecentDeletedに登録される†
- ページ: BugTrack2
- 投稿者: teanan
- 優先順位: 普通
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2005-12-10 (土) 02:43:09
- バージョン:
メッセージ†
$non_list に登録しているページを削除すると、通常のページ同様、RecentDeleted に登録されます。
もちろん、そこからそのページを編集しようとしたり、復元しようとした場合は認証が要求されますので直接内容が漏れるわけではありませんが、ページ名自体に重要な名前を含んでいたり、そのページの存在自体を隠しておきたい場合に不都合があります。
修正内容†
- cvs:lib/file.php
(1.41) -- teanan
- (1.42) すみません、ファイルを消していませんでしたので再修正。 -- teanan
- この処理は add_recent() の中に入れたくなるけれども、add_recent() はまだ (Recentナントカを作る抽象関数として)中途半端な段階にあるし、微妙ですね・・・ (^^; 現状はこれで仕方ないかもしれませんね -- henoheno
- あ、そですね。もっとクリンナップできるかもしれませんね。 -- teanan
- こちらの件、ふんぎりつけました。
- (1) $non_listの処理をadd_recent()の中に組み込みましょう。構造化がきちんとできていないと後で大変です。
- (2) ただし、それだけではnon_listのコードがあちこちに発散している状況を助長してしまいます。$non_listの判定を速やかに行う関数を別途作成し、それを使いましょう。
- (3) また、従来 $non_list を使っているコードをその関数で置き換え(統一し)ましょう。
- そうすると、$non_list が現状 preg_quote() されていない件の修正を一箇所の変更で済ませる事もできるでしょう。 -- henoheno
- 了解です。とりあえず、ステータスを「着手」へ差し戻しておきます。 -- teanan
- add_recentは、いまのところRecentDeletedだけみたいですので、影響は無さそうですね。$non_listを使っているところは腐るほどありますが (^^; -- teanan
- そう、嫌になるくらい腐るほどあるので、片付けました。こうした冗長なコードは今後も無くして行きたいものです。後2箇所ほど、preg_grep() の引数として単独で $non_list を使っているプラグインが残っています。どう料理したものか。 -- henoheno
- check_non_listと同様に preg_grepの部分についても下記のように対応したいのですが、いかがでしょうか? -- teanan
// Exclude $non_list pages.
function exclude_non_list($pages)
{
global $non_list;
static $regex;
if (! isset($regex)) $regex = '/' . $non_list . '/';
return array_diff($pages, preg_grep($regex, $pages));
}
- get_existpagesの引数を追加してnon_listを最初から除外できるようにすると、後からarray_diffしなくても良くなりそうですね・・・ -- teanan
- BugTrack2/196 ページ名を変更すると最新の~件のところに変更前のページ名が残る / $non_list の対象ページを削除した時に、必ずRecentDeleted が更新されたとして、recent.dat を更新している--