アンチスパムの軽量化

今までの実装では、ページが書き込まれる寸前にアンチスパム処理を入れていましたが、:log以下のページなど、wiki側でシステム的に自動更新されるページでもアンチスパムが働き、例えばログを表示するときなどでAkismetエラーが発生していました。そこで、$vars['page']と更新したいページ名が一致するときのみアンチスパムを行うという実装に変更しました。

あと、PukiWiki Adv.に移行した人からよく言われる質問で、「PostIDエラーが発生して更新できない」という問題がありました。これは、PukioWikioの多重投稿チェック処理をAdvに移植したものですが、PukiWikiを使用する人の多くが、戻るボタンを押して更新しなおしているという現状から設定をオプションにしました。

アンチスパムに関する処理をまとめると

// Blocking SPAM
$use_spam_check = array(
	'page_view'			=> 0,	// 閲覧規制(管理者指定による)
	'page_remote_addr'	=> 0,	// 書き込み端末規制(IPBL)
	'page_contents'		=> 0,	// 書き込み内容規制(DNSBL)
	'page_write_proxy'	=> 0,	// Proxy経由での書き込み規制
	'trackback'			=> 1,	// TrackBack。splogなど。(DNSBL)
	'referer'			=> 1,	// Referer SPAM(DNSBL)
	'multiple_post'		=> 0,	// 多重投稿チェック(ここを有効にすると戻るボタンによる更新ができなくなります)
	'bad-behavior'		=> 0,	// Bad Behaviorによるアンチスパム(仮実装)
	'akismet'			=> 1	// Aksmetによるアンチスパムを有効化する(別途$akismet_api_keyを指定する必要があります。)
);

というようになっています。aksmetはかなりの確率でスパムを排除できますが、DNSBLチェックと同様に処理が重い上に誤爆が多いことに注意してください。

テーブルソート機能

tablesorterを使うのをやめて、dataTableを使用することにしました。これにより若干UIが変化しています。なお、スクリプトはCDNからの読み込みです。