« 目次

Movable Type オブジェクト・リファレンス

MT::App::CMS

概要

MT::App::CMSアプリケーションのコールバック(アプリケーション・レベル)について説明します。

再構築オプションのカスタマイズ

Movable Typeで表示されるポップアップの再構築ダイアログには、再構築オプションのドロップダウン・リストがあります。ここに、プラグインが提供するカスタムのオプションを追加できます。たとえば、投稿者別アーカイブの作成に用いるテンプレートの再構築を行うオプションをプラグインで提供したい、といった場合に使用します。

$app->add_rebuild_option(¥%param)
label

再構築オプションのリストに表示するラベルを指定します。

code

カスタムの再構築オプションを選択した際に実行するコードを指定します。

key

オプション固有の識別子を指定します(省略可能。省略した場合にはlabelをもとに生成されます)。

このアプリケーション・メソッドの他に、追加の再構築オプションをさらにカスタマイズするためのRebuildOptionsというコールバックを使うことができます。このコールバックは、アクティブなユーザーまたはブログに固有の項目をリストに追加する必要があるときに有効です。

コールバック

RebuildOptions
callback($eh, $app, ¥@options)

RebuildOptionsは、Movable Typeの再構築ダイアログで表示する、再構築オプションの追加項目の配列を制御します。この配列はハッシュ・リファレンスを要素に持ち、次の各項目が指定できます。

code

カスタムの再構築オプションの実行時に実行するコードを指定します。

label

再構築オプションのリストに表示するラベルを指定します。

key

このオプション固有の識別子を指定します(省略可能。省略した場合にはlabelを元に生成されます)。

CMSPostSave.entry

エントリー保存時、そのエントリーの構成要素(たとえばカテゴリーなど)を保存したあとに実行します。

sub cms_post_entry_save($eh, $app, $entry, $original) {
    ...
}

下位互換性を維持するため、CMSPostEntrySaveとAppPostEntrySaveはCMSPostSave.entryへのエイリアスとなっています。

パラメーター付きコールバック

次のように、すべてのオブジェクトには、その型用に定義されたコールバックのセットがあります。次のリストの各項は、アンダースコアに続いてオブジェクトを付加することで、コールバック名となります。たとえばCMSViewPermissionFilter_blog、CMSPostSave_templateといった形です。typeにあてはまる値は、CMSアプリケーションの_typeクエリー・パラメーターに渡されるものと同じです。どの_typeが特定のMT::Objectサブクラスに対応するのかわからない場合には、次のリストを参照してください。

author => MT::Author
comment => MT::Comment
entry => MT::Entry
template => MT::Template
blog => MT::Blog
notification => MT::Notification
templatemap => MT::TemplateMap
category => MT::Category
banlist => MT::IPBanList
ping => MT::TBPing
ping_cat => MT::TBPing

これらのオブジェクト型に対応するコールバックは次の通りです。

CMSViewPermissionFilter

呼び出し方は次の通りです。

callback($eh, $app, $id, $obj_promise)

ここで$idは、オブジェクトが存在する場合にはそのIDとなり、その型のオブジェクトを新規に作る場合にはundefとなります。$obj_promiseはオブジェクト自身の遅延プロミスです。必要があれば、$obje_promise->forceでオブジェクトを取得することができますが、通常はその必要はありません(MT::Promiseを参照してください)。falseを返すと、処理を中断して、ユーザーにそのオブジェクトを参照する権限がないことを伝えるメッセージを表示します。

CMSDeletePermissionFilter
callback($eh, $app, $obj)
CMSSavePermissionFilter

呼び出し方は次の通りです。

callback($eh, $app, $id)

ここで、$idは、オブジェクトが存在する場合にはそのIDとなり、その型のオブジェクトを新規に作る場合にはundefとなります。この時点ではオブジェクトが存在していない可能性があることに注意してください。リクエストはアプリケーションのクエリー・パラメーターを使って解釈され、$app->param()メソッドで参照することができます。CMSSavePermissionFilterコールバックは安全、つまりデータベースに変更を加えないものである必要があります。falseを返すと、処理を中断して、ユーザーにそのオブジェクトを変更する権限がないことを伝えるメッセージを表示します。ユーザーがスーパーユーザーの場合には、このメソッドの呼び出しは行われません。

CMSSaveFilter

このコールバックにより、権限がないという以外の理由でリクエストを拒否することができます。呼び出し方は次の通りです。

callback($eh, $app)

falseの値を返すとリクエストを拒否します。拒否した理由をユーザーに伝えるため、$ehオブジェクトを通じてエラーを返すのが望ましいでしょう。オブジェクトがまだ生成されていない可能性があることに注意してください。操作は$app->param()を使って$appオブジェクトのクエリー・パラメーターを参照することにより、解釈されます。CMSSaveFilterコールバックは安全、つまりデータベースに変更を加えないものである必要があります。

CMSPreSave
callback($eh, $app, $obj, $original)

$objと$originalは、それぞれ、保存しようとしているオブジェクトと、リクエスト開始時のそのオブジェクトの状態を保持します。このことにより、ユーザーのリクエストでどのような変更が行われようとしたかを、コールバックが知ることができます。リクエストが新しいオブジェクトを作成しようとした場合、$originalは有効なオブジェクト・リファレンスにはなりますが、そのオブジェクトはになります。そのクラスのnewメソッドを呼び出したときの戻り値と同じになります。

CMSPostSave
callback($eh, $app, $obj, $original)

$objと$originalは、それぞれ保存しようとしているオブジェクトと、リクエスト開始時のそのオブジェクトの状態を保持します。コールバック呼び出し時には、$objという新しいオブジェクトが既にデータベースにコミットされています。通知や静的ページの再構築といった事後処理を行うのに便利なタイミングです。

CMSPostDelete
callback($eh, $app, $obj)

$objはデータベースから削除されたばかりのオブジェクトを保持します。削除されたオブジェクトに関連したデータを削除するときに便利です。

CMSUploadFile
callback($eh, %params)

このコールバックは、ユーザーがブログにファイルをアップロードするたびに呼び出されます。このコールバックは、アップロードしたファイルの種別に関係なく、1ファイルごとに呼び出されます。ユーザーがアップロードしたファイルが画像の場合には、CMSUploadFileとCMSUploadImageの両方のコールバックが呼び出されます。

File

ブログに保存されたファイルのフルパスです。

Url

ブログに保存されたファイルのURLです。

Size

ファイルのサイズ(バイト単位)です。

Type

'image'、'file'あるいは'thumbnail'のいずれかです。

Blog

アップロードされたファイルに関連したMT::Blogオブジェクトです。

CMSUploadImage
callback($eh, %params)

このコールバックは、アップロード画像ごとに呼び出されます。ユーザーがアップロード画像のサムネイルを作成する場合、このコールバックはオリジナルのアップロード画像とサムネイルにつき1回ずつ、計2回呼び出されます。

File

アップロードされた画像のフルパスとファイル名です。

Url

アップロードされた画像の完全なURLです。

Size

アップロードされた画像のサイズ(バイト単位)です。

Type

'image'または'thumbnail'(サムネイル生成の場合)のいずれかです。

Height

画像の高さ(ピクセル単位)です。Image::Sizeモジュールがある場合のみ使用可能です。

Width

画像の幅(ピクセル単位)です。Image::Sizeモジュールがある場合のみ使用可能です。

ImageType

Image::Sizeモジュールが判別した画像識別子です。通常、"GIF"、"JPG"または"PNG"のいずれかです。

Blog

その画像と関連するブログのMT::Blogオブジェクトです。


Copyright © 2001-2006 Six Apart, Ltd. All Rights Reserved.