グループを操作する(メンバープラグイン)
ここでは、メンバーインスタンスにおけるグループを、SDKから操作する方法について解説します。
グループオブジェクトECHOMembersGroupObject
ECHOMembersGroupObjectは、グループを操作するためのオブジェクトです。
オブジェクトを生成する
新しいグループとしてオブジェクトを初期化するには、初期化メソッドの第一引数にメンバーインスタンスのIDを指定します。
ECHOMembersGroupObject *group = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID"];
既存グループとしてオブジェクトを初期化するには、初期化メソッドの第二引数にグループIDを指定します。
ECHOMembersGroupObject *group = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"グループID"];
オブジェクトフィールド
グループオブジェクトは、以下のフィールドを持ちます。
フィールド名 | 型 | 説明 | 可変 |
---|---|---|---|
refid | NSString | グループID | × |
name | NSString | グループ名 | ◯ |
フィールドからデータを取得する
オブジェクトのフィールドからデータを取得する場合は、objectForKey:メソッドを使用します。
String *name = [group objectForKey:@"name"];
フィールドにデータをセットする
オブジェクトのフィールドにデータをセットするには、setObject:forKey:メソッドを使用します。
[group setObject:@"新しいカテゴリ" forKey:@"name"];
グループを保存する
リモートサーバーへグループを保存するには、push:メソッド(同期通信による保存)もしくはpushInBackgroundWithBlock:メソッド(非同期通信による保存)を使用します。
ECHOMembersGroupObject *group = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID"];
[group setObject:@"新しいグループ" forKey:@"name"]; // グループ名をセット
....
// 非同期でグループを保存
[group pushInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", group);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
グループを取得する
リモートサーバー上に存在するグループを取得するには、fetch:メソッド(同期通信による取得)もしくはfetchInBackgroundWithBlock:メソッド(非同期通信による取得)を使用します。
ECHOMembersGroupObject *group = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"グループID"];
// 非同期でグループを取得
[group fetchInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", group);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
グループを削除する
リモートサーバー上に存在するグループを削除するには、delete:メソッド(同期通信による削除)もしくはdeleteInBackgroundWithBlock:メソッド(非同期通信による削除)を使用します。
ECHOMembersGroupObject *group = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"グループID"];
// 非同期でグループを削除
[group deleteInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete");
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
現在のACLを取得する
オブジェクトに現在設定されているACLを取得するには、currentACLプロパティを使用します。
ECHOACLObject *current_acl = group.currentACL;
ACLを変更する
オブジェクトに新しいACLを設定するには、setNewACL:メソッドを使用します。
ECHOACLObject *new_acl = [[ECHOACLObject alloc] init]; // ACLオブジェクトを生成
[new_acl putEntryForAll: [[ECHOACLEntry alloc] initWithGet:NO list:NO edit:NO delete:NO] ]; // 例:非ログイン訪問者の操作権限を全て奪う
[group setNewACL:new_acl]; // 新しいACLをセット
[group push:nil]; // セットしたACLを反映させるには、最後に必ず保存を実行してください
グループマップECHOMembersGroupsMap
ECHOMembersGroupsMapは、ツリー構造を持つグループマップを再帰的に表現します。
オブジェクトを生成する
ルートから最下層までを含んだ全グループマップとしてオブジェクトを初期化するには、初期化メソッドの第一引数にブログインスタンスまたはデータベースインスタンスのIDを指定します。
ECHOMembersGroupsMap *groups_map = [[ECHOMembersGroupsMap alloc] initWithInstanceId:@"メンバーインスタンスID"]; // 全グループマップオブジェクトを生成
特定のグループをルートにしたサブグループマップとしてオブジェクトを初期化するには、初期化メソッドの第二引数にルートとなるグループIDを指定します。
ECHOMembersGroupsMap *groups_map = [[ECHOMembersGroupsMap alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"グループID"]; // サブグループマップオブジェクトを生成
ルートグループを取得する
グループマップからルートグループを取得するには、nodeプロパティを使用します。
子サブグループマップを取得する
ルートグループの下層に属するサブグループマップ群を取得するには、childrenプロパティを使用します。
グループマップを取得する
リモートサーバーからグループマップを取得するには、fetch:メソッド(同期通信による取得)もしくはfetchInBackgroundWithBlock:メソッド(非同期通信による取得)を使用します。
// 非同期でグループマップを取得
[groups_map fetchInBackgroundWithBlock:^(NSError *e) {
if(e == null) { // 正常終了
NSLog(@"Complete: %@", groups_map);
}else{ // 異常発生
NSLog(@"Error: %@", e);
}
}];
グループの所属階層を変更する
グループの所属階層を変更するには、グループオブジェクトのsetNewParent:メソッドを使用します。
ECHOMembersGroupObject *newParent = [[ECHOMembersGroupObject alloc] initWithInstanceId:@"メンバーインスタンスID" refid:@"新しい親グループID"];
[group setNewParent:newParent]; // 新しい親グループをセット
[group push:nil]; // 反映させるには、最後に必ず保存を実行してください