Movable Type 4 では、データベースを拡張するタイプのプラグインを新規にインストールした場合などに行われるアップグレードの際に、何かしら処理を行わせることができます。あまりしっかりコードを読んだわけではないので恐縮ですが、次のように upgrade_functions を init_registry に追加してやることで簡単に処理を入れられます。
sub init_registry {
my $plugin = shift;
$plugin->registry({
upgrade_functions => { # ここから
'add_hoge' => {
version_limit => 4.0,
code => \&_add_hoge,
priority => 9.9,
},
}, # ここまで
tags => {
function => {
'HogeHoge' => \&_hogehoge,
},
},
});
}
sub _add_hoge {
# ここに処理内容
return 1;
}
version_limit は、その処理を行わせる Movable Type のバージョン、priority は処理の順番...だろうと思っています。プラグインのアップグレードのタイミングで処理をさせることで、例えば、プラグインをインストールするだけで新しいロールやテンプレートもインストールされる、なんてことが実現できるわけです。うまく使えば、ユーザにかかる手間や負担を減らすことができるでしょう。注意点ですが、おそらく正の値を return してあげないと、アップグレード処理が終わらないと思います。
[MT_DIR]/lib/MT/Core.pm の core_registry のところに upgrade_functions が書いてあったので、たぶんこんな感じだろうと思ってやってみたらあっさりできました。Ver. 4.21 で確認していますが、おそらく Ver. 4 以上であればできると思います。使う場面が多いかどうかはわからないけれど、懐は広い方がよいので、プラグインを書く人は頭の片隅に入れておきましょう。
Comments