web-dev-qa-db-ja.com

ユーザーが所属するすべてのオーガニックグループのリスト/配列を取得する

しばらくオンラインで検索してきましたが、これまでのところ、ユーザーがメンバーとなっているすべてのグループの配列またはリストを提供するog関数を見つけることができませんでした。そのような機能はありますか?そうでない場合、これを実行できるSQLクエリを実行できますか?

5
Mike2012

Drupal 7と最新のOGを使用しているとすると、 og_get_groups_by_user() を使用できます。

ユーザーが承認されたメンバーであるすべてのグループのグループIDを取得します。

8
enzipher

私は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]));
}
0