しばらくオンラインで検索してきましたが、これまでのところ、ユーザーがメンバーとなっているすべてのグループの配列またはリストを提供するog関数を見つけることができませんでした。そのような機能はありますか?そうでない場合、これを実行できるSQLクエリを実行できますか?
Drupal 7と最新のOGを使用しているとすると、 og_get_groups_by_user() を使用できます。
ユーザーが承認されたメンバーであるすべてのグループのグループIDを取得します。
私はog_get_groups_by_user()
の大ファンですが、メンバーシップデータで何が返されるかについてもう少し制御すると役立つ場合があります。
以下は、特定のユーザーがメンバーであるすべてのグループノードを取得するスタータークエリです。
$uid = 123;
$query = db_select('og_membership', 'ogm');
$query->condition('ogm.type', OG_MEMBERSHIP_TYPE_DEFAULT);
$query->condition('ogm.etid', $uid);
$query->condition('ogm.entity_type', 'user');
$query->condition('ogm.group_type', 'node');
$query->join('node', 'n', 'n.nid = ogm.gid');
$query->fields('n', ['nid', 'title']);
$query->condition('n.type', 'group');
$query->orderBy('n.title', 'ASC');
$rows = $query->execute();
foreach ($rows as $row) {
drupal_set_message(t('Member of @group', ['@group' => $row->title]));
}