参照によって渡されるパラメータを次のように変更することで、特定のページに対するすべての編集を存在しないユーザーに関連付ける PageContentSaveフックを作成できるはずです。$user
function anonymizeSandboxEdits( &$wikiPage, &$user, &$content, &$summary,
$isMinor, $isWatch, $section ) {
$title = $wikiPage->getTitle();
if ( $title->getNamespace() == NS_PROJECT && $title->getText() == 'Sandbox' ) {
$user = User::newFromName( 'Anonymous' );
}
return true; // keep running other hooks
}
$wgHooks['PageContentSave'][] = 'anonymizeSandboxEdits';
$wgReservedUsernames[] = 'Anonymous';
このコードを LocalSettings.php に追加すると、ページ "Project:Sandbox" ("Project:" はプロジェクトの名前空間名) に対するすべての編集が、存在しないユーザー "Anonymous" に帰属するようになります。
PageContentSave フックは、ごく最近、MediaWiki 1.21 で導入されたことに注意してください。MediaWiki の古いバージョンには、ほぼ同等のArticleSaveという名前のフックがあり、基本的に同じパラメーターを取り、基本的に同じことを行います。古いバージョンの MediaWiki をまだ実行している場合は、'PageContentSave
上記の ' をに置き換えるだけ'ArticleSave'
で問題ありません。
ArticleSave フックは MW 1.21 で廃止されましたが、下位互換性のために引き続き保持されているため、アップグレードしても機能し続けるはずです。ただし、MediaWiki の将来のバージョンでは、他の何かがこのトリックを破らないという保証はないことに注意してください:$user
そのフック内のオブジェクトを置き換えると、編集の再帰属にはうまく機能するように見えますが、その特定のユース ケースは、明示的にサポートされているとは実際には文書化されていません。 . MediaWiki コードへの将来の変更により、多かれ少なかれ微妙に壊れる可能性があります。
Ps。私は自分の wiki でこれを試しました (まだ MW 1.20 を実行しているため、ArticleSave バージョンを使用しています)。ちょっと奇妙な副作用として、 でページに署名しようとすると~~~~
、実際のユーザー名がプレビューに表示されますが、実際にページを保存すると「匿名」に置き換えられます。これを回避することは可能かもしれませんが、実際にプレビューで実行される他のフックを使用する必要があります。