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