use MT::Permission;
my $perms = MT::Permission->load({ blog_id => $blog->id,
author_id => $author->id })
or die "Author has no permissions for blog";
$perms->can_post
or die "Author cannot post to blog";
$perms->can_edit_config(0);
$perms->save
or die $perms->errstr;
MT::Permissionオブジェクトは、1人の投稿者が特定のブログに対して持つ権限を表します。権限は操作ごとに設定され、各権限は投稿者とブログの組み合わせについてオン/オフで設定されます。権限はビットマスクの形で保存されます。
MT::PermissionはMT::Objectのサブクラスで、MT::Objectのデータ管理およびデータ保存用のメソッドをすべて継承していますので、新規オブジェクトの生成、既存オブジェクトの読み込み、オブジェクトの保存などの詳細については、MT::Objectのドキュメントを参照してください。
MT:Permissionインターフェース独自のメソッドは次のとおりです。set_full_permissionsメソッドを除く各メソッドは、オプション引数をつけて呼び出すことでオン/オフの設定ができます。trueと評価される値を引数に指定すると、その権限が有効になり、falseを引数にすると無効になります。引数を指定しない場合、現在の権限設定が返されます。
$permsで指定した投稿者とブログの組み合わせについて、すべての権限を有効にします。
投稿者がそのブログにエントリーの投稿ができ、そして投稿したエントリーの編集ができる場合にtrueを返し、できなければfalseを返します。
その投稿者が、そのブログのブログ・ディレクトリにファイルをアップロードできる場合にtrueを返し、できなければfalseを返します。
その投稿者が、そのブログに投稿されたすべてのエントリー(自分の投稿でないものも含めて)を編集できる場合にtrueを返し、そうでなければfalseを返します。
その投稿者が、そのブログのテンプレートを編集できる場合にtrueを返し、そうでなければfalseを返します。
その投稿者が、そのブログの通知リストにメッセージを送れる場合にtrueを返し、そうでなければfalseを返します。
その投稿者が、そのブログに設定されたカテゴリーを編集できる場合にtrueを返し、そうでなければfalseを返します。
その投稿者が、そのブログの通知リストを編集できる場合にtrueを返し、そうでなければfalseを返します。
その投稿者が、そのブログについての投稿者権限を編集し、そのブログにアクセスできる投稿者を追加することができる場合にtrueを返し、そうでなければfalseを返します。
この権限を投稿者に与えると、その投稿者は、そのブログへのあなたのアクセスを禁止することもできてしまいますので、注意が必要です。
その投稿者が、そのブログの環境設定を編集できる場合にtrueを返し、そうでなければfalseを返します。この権限を与えられた投稿者は、ブログのエントリーをインポート/エクスポートする権限も持つということに注意してください。
MT::Permissionオブジェクトは次のデータを格納します。これらのフィールドは、MT::Objectのドキュメントで説明したような標準的なデータ・アクセス用メソッドで参照あるいは設定できます。
権限レコードのIDです。
この権限レコードで権限を規定する投稿者のIDです。
この権限レコードで権限を規定するブログのIDです。
権限を表すビットマスクです。この値を直接編集してはいけません。必ず前述のcan_*メソッドを使うようにしてください。
「エントリーの編集」ページの表示設定です。author_idが0のユーザーの設定が、このブログのデフォルトの設定となります。
「テンプレートの編集」ページの表示設定です。author_idが0のユーザーの設定が、このブログのデフォルトの設定となります。
権限レコードの検索では、IDによる検索の他、次のフィールドの任意の組み合わせによる検索やソートを行うことができます。詳細はMT::Objectのドキュメントのloadメソッドの説明を参照してください。