frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

MT4で「アクティブユーザー数」をカウントする方法。

仕事の都合で引き続き、MT4について仕様確認中。

で、管理画面の「システムメニュー」の「ツール」の「システム情報」で表示される

「アクティブユーザー数」は、どうやってカウントしているのか調べた。

んで、MT::CMS::Tools の system_check メソッドん中でやってるように

以下を実行すりゃいい模様。

# licensed user count: someone who has logged in within 90 days

my $sess_class = $app->model('session');

my $from = time - ( 60 * 60 * 24 * 90 + 60 * 60 * 24 );

$sess_class->remove(

{ kind => 'UA', start => [ undef, $from ] },

{ range => { start => 1 } }

);

$param{licensed_user_count} = $sess_class->count( { kind => 'UA' } );

なるほどね。

MTのライセンス情報ん所の「ユーザー数(ブログ著者数)」に...

Movable Type システムへのログイン名を持ち、

ブログに記事を投稿するユーザー数です。

閲覧やコメントするユーザー数ではないことにご注意ください。

ライセンス上の定義は、Movable Type 上にユーザー ID とパスワードを保有し、

過去90日以内にログインしたユーザー数となります。

...と書いてあるから、90日以内にログインしたユーザーが

アクティブユーザー扱いな訳で。

それより過去のログイン情報は delete してから

mt_session.session_kind = 'UA' のレコードをカウントする訳ですね。

ちなみに、session_kind の種類については

ドンドン増えているようで、

MT::Session のpod見ると種類の内容について書いてあるみたいです。

てな訳で、あとは $app を用意してあげなアカンので

こんな風にすると良いです。

#!/usr/bin/perl -w

# --------------------------------------

# show number of active user for MT4

# --------------------------------------

use strict;

use lib qw(extlib lib);

use MT;

my $app = MT->instance;

my $sess_class = $app->model('session');

my $from = time - ( 60 * 60 * 24 * 90 + 60 * 60 * 24 );

$sess_class->remove(

{ kind => 'UA', start => [ undef, $from ] },

{ range => { start => 1 } }

);

my $active_user = $sess_class->count( { kind => 'UA' } );

print "Content-type: text/html\n\n${active_user}";

exit;

# end of this script

あとついでに、/static/ が /mt-static/ になってて驚きました。

mt-config.cgi の中で設定してる StaticWebPath が /static/ のままだと

MT3からMT4へのアップデート画面すらうまく動作しないので、要注意ですー。

...って、仕様調べてるうちに、もう MT4.26 出てるのね...orz