グループを操作する(メンバプラグイン)
ここでは、メンバーインスタンスにおけるグループを、SDKから操作する方法について解説します。
グループオブジェクトECHO.MembersGroupObject
MembersGroupObjectは、グループを操作するためのオブジェクトです。
オブジェクトを生成する
新しいグループをオブジェクトとして生成するには、コンストラクタの第一引数にメンバーインスタンスのIDを指定します。
var group = new ECHO.MembersGroupObject("メンバーインスタンスID");
既存のグループをオブジェクトとして生成するには、コンストラクタの第二引数にグループIDを指定します。
var group = new ECHO.MembersGroupObject("メンバーインスタンスID", "グループID");
オブジェクトフィールド
グループオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 変更 |
---|---|---|---|
refid | String | グループID | × |
name | String | グループ名 | ◯ |
変更不可フィールドは、サーバーから提供される静的な情報です。
フィールドからデータを取得する
フィールドからデータを取得する場合は、getメソッドを使用します。
var name = group.get("name");
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、putメソッドを使用します。
group.put("name", "新しいグループ");
サーバーへグループを保存する
サーバーへグループを保存するには、pushメソッドを使用します。
var group = new ECHO.MembersGroupObject("メンバーインスタンスID");
group.put("name", "新しいグループ"); // グループ名をセット
....
// グループを保存
var promise = group.push();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
サーバーからグループを取得する
サーバー上に存在する既存のグループを取得するには、fetchメソッドを使用します。
var group = new ECHO.MembersGroupObject("メンバーインスタンスID", "グループID");
// グループデータを取得
var promise = group.fetch();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
サーバーからグループを削除する
サーバー上に存在する既存のグループを削除するには、deleteメソッドを使用します。
var group = new ECHO.MembersGroupObject("メンバーインスタンスID", "グループID");
// グループデータを削除var promise = group.delete();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、getACLメソッドを使用します。
var current_acl = group.getACL();
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACLメソッドを使用します。
var new_acl = new ECHO.ACL(); // ACLオブジェクトを生成
new_acl.putEntryForAll(new ECHO.ACL.Entry(false, false, false, false)); // 例:非ログイン訪問者の操作権限を全て奪う
group.setNewACL(new_acl); // 新しいACLをセット
group.push(); // セットしたACLを反映させるには、最後に必ず保存を実行してください
グループマップECHO.MembersGroupsMap
MembersGroupsMapは、ツリー構造を持つグループマップを再帰的に表現します。
オブジェクトを生成する
ルートから最下層までを対象とした全グループマップをオブジェクトとして生成するには、第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。
var groups_map = new ECHO.MembersGroupsMap("メンバーインスタンスID"); // 全グループマップオブジェクトを生成
特定のグループをルートとしたサブグループマップをオブジェクトとして生成するには、第二引数にルートとなるグループIDを指定します。
var groups_map = new ECHO.MembersGroupsMap("メンバーインスタンスID", "グループID"); // サブグループマップオブジェクトを生成
ルートグループを取得する
グループマップからルートグループを取得するには、nodeプロパティを参照してください。
子サブグループマップを取得する
ルートグループの下層に属するサブグループマップ群を取得するには、childrenプロパティを参照してください。
サーバーからグループマップを取得する
サーバーからグループマップを取得するには、fetchメソッドを使用し、サーバーから現在のグループマップを取得します。
// グループマップを取得
var promise = groups_map.fetch();
// コールバックを定義
promise.then(function(success) { // 成功時
console.log("Complete: " + success);
}, function(error) { // 失敗時
console.log("Complete: " + error);
});
グループの所属階層を変更する
グループの所属階層を変更するには、グループオブジェクトのsetNewParentメソッドを使用します。
var newParent = ECHO.MembersGroupObject("メンバーインスタンスID", "新しい親グループID");
group.setNewParent(newParent); // 新しい親グループをセット
group.push(); // 反映させるには、最後に必ず保存を実行してください