3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

PukiWikiで最終更新したIPアドレスとユーザ名を表示したい

PukiWiki 1.4.7 で、HTTPベーシック認証をつかって特定のユーザにか編集させないようにしているんですが、各ページの最終更新者が誰であるかというのをページ最下部の Last-modified に表示できないかと思いました。

で、調査すると、質問箱3/408 - PukiWiki-officialに答えがありました。

まず、lib/file.php ファイルの page_write() 関数の、links_update($page);の下に下記を追加します。

$fh = fopen(CACHE_DIR.'lmb_'.encode($page),'w');

fwrite($fh,$_SERVER['PHP_AUTH_USER'].'('.$_SERVER['REMOTE_ADDR'].')');

fclose($fh);

今回は、ベーシック認証時のユーザ名とIPアドレスを記録するようにしました。

スーパーグローバル変数を使って、サーバから取れる任意の情報を記録します。(詳しくはPHP: $_SERVER - Manualを参考)

上記コードにより、キャッシュフォルダに "lmb_ページ名" のファイルが作成されます。

(なのでキャッシュをクリアしちゃうと最終更新者情報が消えちゃいます。)

あとは表示側の設定です。

skin/pukiwiki.skin.php ファイルで、Last-modified の部分を下記のように修正します。

 id="lastmodified">Last-modified: <?php echo $lastmodified.' by '.file_get_contents(CACHE_DIR.'lmb_'.encode($vars['page']));?>

これで、ページ編集後に Last-modified: の部分が下記のように最終更新者が表示されるようになりました。

Last-modified: 2011-07-01 (金) 10:00:0 (0m) by hoge(10.0.0.10)