MediawikiのExtension:AccessLog

閲覧数: 20(0)

旅日記ネタが続いたので久しぶりにITネタを。本来アクセス数を稼ぐブログでは統一したテーマで一貫して書くことが最良とされているそうです。特にアクセス数を狙っていないので書きたいことを書いています。実のところITネタの方がヒットは多いですW

今回は、タイトルにある通りMediawiki(Wikipediaのもとになっているオープンソース)の機能を拡張するExtensionについてです。ここでも何度か紹介したTsubopediaはベースにMediawikiを使用しています。途中でダウングレードした時期もありましたが、現在は常に最新バージョンを適用するようにしています。現在は、2017年4月30日リリースの1.28.2です。Extensionで様々な拡張を行っていますが、まずは特別ページから、最初に紹介するのはAccessLogです。誰がどのページにアクセスしてきているのかユーザー名またはIPアドレスで判るようになります。タイトル画像がその例です。

作りは若干古く、そのままでは1.25以降ぐらいから使えなくなっています。最低限使えるようにハードコーディングで修正しています。ついでに多少の日本語化のため言語ファイルに記述を追加しました。その他にもイメージファイルフォルダの場所変更なども行っていますがこれは必須ではないので省きます。

ではまずAccessLog.phpから、特別ページでのアクセス権を’sysop'(管理者)に限定する設定です。$wgGroupPermissions[‘sysop’][‘accesslog’] = true;を冒頭に追加します。

if (!defined('MEDIAWIKI')) {
    echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
        die( 1 );
}

$wgGroupPermissions['sysop']['accesslog'] = true;

次に、AccessLog.body.phpを修正します。Extensionを入れただけではエラーが出てしまい、画面が表示されませんので、ログからエラーを辿って、結局AccessLog.body.phpの以下の記述が原因であると思ったので、185行目付近のgetLang()をgetLanguage()に修正しています。コメント行は元の記述です。

                $out .= ' ';
//              $out .= $this->getLang()->pipeList( $links );
                $out .= $this->getLanguage()->pipeList( $links );

多言語対応していないので、メッセージ等がすべて英語ですが、AccessLog.i18n.phpに以下の行を追加すると、メッセージ等が日本語で表示されるようになります。必須ではありません。$messages[‘en’] = array()の後に以下の行を追加します。最後の?>は含まれていないので忘れないようにしましょう。

        $messages['qqq'] = array(
                'accesslog' => 'Access log',
                'accesslog-badaccess' => 'You do not have access right to this page.',
                'accesslog-disclaimer' => 'This special page lists the access log. For any questions or troubleshooting, please <a href="mailto:$1">contact</a> the administrator.',
                'accesslog-filter-fieldset' => 'Log filtering options',
                'accesslog-filter-access' => 'Access:',
                'accesslog-filter-access-all' => 'all',
                'accesslog-filter-access-view' => 'view',
                'accesslog-filter-access-edit' => 'edit',
                'accesslog-filter-or' => 'or ',
                'accesslog-filter-title' => 'Title:',
                'accesslog-filter-user' => 'User:',
                'accesslog-filter-user-anons' => '$1 anonymous users',
                'accesslog-filter-user-loggedin' => '$1 logged-in users',
                'accesslog-filter-user-mine' => '$1 my actions',
                'accesslog-filter-daysinput' => 'in last $1 day(s)',
                'accesslog-purge-fieldset' => 'Purge old logs',
                'accesslog-purge-daysinput' => 'Purge log older than $1 day(s) ',
                'accesslog-purge-button' => 'Purge',
                'accesslog-purge-all' => 'Are you sure you want to purge the entire log?',
                'accesslog-purge-days' => 'Are you sure you want to purge entries older than {{PLURAL:$1|one day|$1 days}}?',
                'accesslog-access-view' => 'has viewed',
                'accesslog-access-edit' => 'has edited'
        );

        $messages['ja'] = array(
                'accesslog' => 'アクセス ログ',
                'accesslog-badaccess' => 'このページへのアクセス権がありません。
',
                'accesslog-disclaimer' => 'この特別ページはアクセスログです。 For any questions or troubleshooting, please <a href="mailto:$1">contact</a> the administrator.',
                'accesslog-filter-fieldset' => 'ログフィルタオプション',
                'accesslog-filter-access' => 'アクセス:',
                'accesslog-filter-access-all' => '全て',
                'accesslog-filter-access-view' => '閲覧',
                'accesslog-filter-access-edit' => '編集',
                'accesslog-filter-or' => 'or ',
                'accesslog-filter-title' => 'タイトル:',
                'accesslog-filter-user' => 'ユーザ:',
                'accesslog-filter-user-anons' => '$1 anonymous users',
                'accesslog-filter-user-loggedin' => '$1 logged-in users',
                'accesslog-filter-user-mine' => '$1 自分のアクション',
                'accesslog-filter-daysinput' => '過去 $1 日',
                'accesslog-purge-fieldset' => '古いログの消去',
                'accesslog-purge-daysinput' => '過去 $1 日より古いログの消去',
                'accesslog-purge-button' => '消去',
                'accesslog-purge-all' => 'Are you sure you want to purge the entire log?',
                'accesslog-purge-days' => 'Are you sure you want to purge entries older than {{PLURAL:$1|one day|$1 days}}?',
                'accesslog-access-view' => '閲覧',
                'accesslog-access-edit' => '編集'
        );
カテゴリーIT閑話, 公開タグ,
非互換対応再び

サイトのお守りというのは、言い換えれば「それらを構成するソフトウェア群とそれらが稼働するハードウェア  続きを読む

ElasticPress 3.5.6
blank

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

閲覧数まとめ
blank

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

Zabbix 5.0を導入する
blank

もうね、完全にネタ切れw、ITネタで突っ走るしかない。今回は久しぶりのZABBIXネタと、それが稼働  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

ページナビのテキスト
blank

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください